Android实现手势滑动和简单动画效果

发布时间 - 2026-01-11 01:07:47    点击率:

一、手势滑动

1.Activity都具有响应触摸事件,也就是说只要触摸Activity,他都会回调一个onTouchEvent()方法。但是在这个方法里无法处理事件,需要配合使用手势识别器(GestureDetector)中的方法onTouchEvent对事件(event)进行分析处理,我们只需要重写这个方法中的操作来达到我们的需求。

   /**
   * activity被触摸后,会回调此方法onTouchEvent,并回传一个event对象
   * event对象封装了触摸时的动作信息,包括x、y坐标等等信息 
   */
   @Override
  public boolean onTouchEvent(MotionEvent event) {
    // TODO Auto-generated method stub
    boolean onTouchEvent = gestureDetector.onTouchEvent(event);
    //如果这个方法消费了这个这个event事件,就返回True,否则false。
    return super.onTouchEvent(event);
  }

2.我们需要根据滑动手势做界面跳转,GestureDetector封装了可以监听不同手势的方法。这个方法在哪个Activity中使用,这个Activity就能监听这个Activity接收的动作,在这些方法里可以重写需要的动作。

  GestureDetector gestureDetector = new GestureDetector(this, new OnGestureListener(){
      @Override
      public boolean onDown(MotionEvent e) {
        // 按下
        return false;
      }
      @Override
      public void onShowPress(MotionEvent e) {
        // TODO Auto-generated method stub       
      }
      @Override
      public boolean onSingleTapUp(MotionEvent e) {
        // 点击
        return false;
      }
      @Override
      public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
        // 滑动
        return false;
      }
      @Override
      public void onLongPress(MotionEvent e) {
        // 长按        
      }
      /**
      *滑动, e1为起点坐标,e2为终点坐标
      *在这里消费掉event事件,重写其中的方法以达到需求。
      /
      @Override
      public boolean onFling(MotionEvent e1, MotionEvent e2,float velocityX, float velocityY) {
       if(e1.getRawX()-e2.getRawX()>200){
          flingnextpage(); //向左滑(与滑动动画配合效果较好)
        }else if(e2.getRawX()-e1.getRawX()>200){
          flingpreviouspage();//向右滑
          }
        if(Math.abs(e1.getRawY()-e2.getRawY())>200){
        System.out.println("不能斜着滑动");
        return true;//true表示我们消费了这个触摸事件
          }
        if(Math.abs(velocityX)<150 ||Math.abs(velocityY)<100){
        System.out.println("滑动的太慢了,请滑快点");
        return true;
          }        
      return true;
      }      
    });

注:页面坐标

二、简单动画

目的:用XML文件写一个Activity跳转页面的过渡动画。

1. 在res目录下新建anim文件夹,创建两个xml文件并编辑动画动作,一个是进入动作,另一个退出动作。

(1)在anim_next_in.xml中写好进入动作。

<?xml version="1.0" encoding="utf-8"?>
<translate
  android:fromXDelta="100%p" <!—当前界面的右侧界面,从右侧滑入当前界面-->
  android:toXDelta="0"
  android:duration="100" <!--移动时间--> 
  xmlns:android="http://schemas.android.com/apk/res/android">
</translate>

(2)在anim_next_out.xml中写好退出动作。

<?xml version="1.0" encoding="utf-8"?>
<translate
  android:fromXDelta="0" <!—当前界面向左滑出-->
  android:toXDelta="-100%p"
  android:duration="100"
   xmlns:android="http://schemas.android.com/apk/res/android">
</translate>

2.调用Activity的overridePendingTransition方法,来实现平移动画。

/**
* overridePendingTransition(int enterAnim, int exitAnim)
* enterAnim为进入当前界面的动画资源ID, exitAnim为退出当前界面的动画资源ID
/
@Override
public void flingnextpage() {
  // TODO Auto-generated method stub
   startActivity(new Intent(this, NewActivity.class));
   overridePendingTransition(R.anim.anim_next_in, R.anim.anim_next_out);
   finish();//关闭当前界面
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Android  # 手势滑动  # Android仿京东顶部搜索框滑动伸缩动画效果  # Android实现页面滑动切换动画  # Android程序开发之使用Design包实现QQ动画侧滑效果和滑动菜单导航  # Android编程实现ViewPager多页面滑动切换及动画效果的方法  # Android Tween动画之RotateAnimation实现图片不停旋转效果实例介绍  # android实现图片闪烁动画效果的两种实现方式(实用性高)  # Android Glide图片加载(加载监听、加载动画)  # Android图片翻转动画简易实现代码  # Android实现图片点击预览效果(zoom动画)  # Android实现ViewFlipper图片动画滑动  # 重写  # 跳转  # 装了  # 回调  # 写好  # 在这里  # 在这个  # 就能  # 较好  # 只需要  # 按下  # 在这些  # 来实现  # 慢了  # 进行分析  # 大家多多  # 滑出  # 斜着  # 回传  # 也就是说 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何实现密码重置功能_Laravel密码找回与重置流程  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  如何用IIS7快速搭建并优化网站站点?  百度输入法ai组件怎么删除 百度输入法ai组件移除工具  微信小程序 canvas开发实例及注意事项  Laravel如何实现API速率限制?(Rate Limiting教程)  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  Laravel中的withCount方法怎么高效统计关联模型数量  如何快速打造个性化非模板自助建站?  Laravel如何实现文件上传和存储?(本地与S3配置)  网站建设要注意的标准 促进网站用户好感度!  敲碗10年!Mac系列传将迎来「触控与联网」双革新  Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】  高性价比服务器租赁——企业级配置与24小时运维服务  如何利用DOS批处理实现定时关机操作详解  Laravel怎么使用artisan命令缓存配置和视图  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  实例解析angularjs的filter过滤器  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  中山网站推广排名,中山信息港登录入口?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  高防服务器租用首荐平台,企业级优惠套餐快速部署  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  ,在苏州找工作,上哪个网站比较好?  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  如何在橙子建站上传落地页?操作指南详解  个人摄影网站制作流程,摄影爱好者都去什么网站?  北京专业网站制作设计师招聘,北京白云观官方网站?  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  文字头像制作网站推荐软件,醒图能自动配文字吗?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  北京企业网站设计制作公司,北京铁路集团官方网站?  如何将凡科建站内容保存为本地文件?  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  Linux安全能力提升路径_长期防护思维说明【指导】  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  Python文件流缓冲机制_IO性能解析【教程】  如何在建站之星绑定自定义域名?  如何选择PHP开源工具快速搭建网站?  如何用已有域名快速搭建网站?  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  如何快速搭建支持数据库操作的智能建站平台?  浅谈Javascript中的Label语句