>>分享Android开发相关的技术 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 21833 个阅读者 刷新本主题
 * 贴子主题:  android 手势操作GestureDetector 回复文章 点赞(0)  收藏  
作者:sunshine    发表时间:2020-05-15 06:27:44     消息  查看  搜索  好友  邮件  复制  引用

   利用触摸屏的Fling、Scroll等Gesture(手势)操作来操作会使得应用程序的用户体验大大提升,比如用Scroll手势在 浏览器中滚屏,用Fling在阅读器中翻页等。在Android 系统中,手势的识别是通过 GestureDetector.OnGestureListener接口来实现的,举例说明:
  1.    public   class  ActivityMain  extends Activity  implements  GestureDetector.OnGestureListener {
  2.       GestureDetector detector;
  3.        /**
  4.         * Called when the activity is first created.
  5.         */  
  6.        @Override  
  7.        public   void  onCreate(Bundle savedInstanceState) {
  8.            super .onCreate(savedInstanceState);
  9.           setContentView(R.layout.main);
  10.            //构造GestureDetector;Context context, OnGestureListener listener  
  11.           detector =  new  GestureDetector( this ,  this );
  12.           detector.setOnDoubleTapListener( new  GestureDetector.OnDoubleTapListener() {
  13.               //短快的点击算一次单击  
  14.                @Override  
  15.                public   boolean  onSingleTapConfirmed(MotionEvent e) {
  16.                   System.out.println( "onSingleTapConfirmed" );
  17.                    return   false ;
  18.               }
  19.                //双击时产生一次  
  20.                @Override  
  21.                public   boolean  onDoubleTap(MotionEvent e) {
  22.                   System.out.println( "onDoubleTap" );
  23.                    return   false ;
  24.               }
  25.              //双击时产生两次  
  26.                @Override  
  27.                public   boolean  onDoubleTapEvent(MotionEvent e) {
  28.                   System.out.println( "onDoubleTapEvent" );
  29.                    return   false ;
  30.               }
  31.           });
  32.       }
  33.        @Override  
  34.        public   boolean  onTouchEvent(MotionEvent event) {
  35.            return  detector.onTouchEvent(event);
  36.       }
  37.        // 用户轻触触摸屏,由1个MotionEvent ACTION_DOWN触发  
  38.        @Override  
  39.        public   boolean  onDown(MotionEvent e) {
  40.           System.out.println( "onDown" );
  41.            return   false ;
  42.       }
  43.      // 用户轻触触摸屏,尚未松开或拖动,由一个1个MotionEvent ACTION_DOWN触发    
  44.       // 注意和onDown()的区别,强调的是没有松开或者拖动的状态  
  45.        @Override  
  46.        public   void  onShowPress(MotionEvent e) {
  47.       }
  48.        //用户(轻触触摸屏后)松开,由一个1个MotionEvent ACTION_UP触发  
  49.        @Override  
  50.        public   boolean  onSingleTapUp(MotionEvent e) {
  51.           System.out.println( "onSingleTapUp" );
  52.            return   false ;
  53.       }
  54.       // 用户按下触摸屏,并拖动,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE触发  
  55.        @Override  
  56.        public   boolean  onScroll(MotionEvent e1, MotionEvent e2,  float  distanceX,  float  distanceY) {
  57.           System.out.println( "onScroll" );
  58.            return   false ;
  59.       }
  60.       // 用户长按触摸屏,由多个MotionEvent ACTION_DOWN触发  
  61.        @Override  
  62.        public   void  onLongPress(MotionEvent e) {
  63.           System.out.println( "onLongPress"  + e.getEventTime());
  64.       }
  65.       //用户按下触摸屏、快速移动后松开,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE, 1个ACTION_UP触发  
  66.        @Override  
  67.        public   boolean  onFling(MotionEvent e1, MotionEvent e2,  float  velocityX,  float  velocityY) {
  68.           System.out.println( "onFling: "  + (e1.getX() - e2.getX()) +  " "  + (e1.getY() - e2.getY()) +  " "  + velocityX +  " "  + velocityY);
  69.           System.out.println(e1.getY());
  70.            return   false ;
  71.       }
  72.   }

               ----------------------------
原文链接:https://blog.51cto.com/maxuefeng/564128

程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-06-05 08:13:35 重新编辑]
  Java面向对象编程-->异常处理
  JavaWeb开发-->访问数据库(Ⅰ)
  JSP与Hibernate开发-->数据库事务的概念和声明
  Java网络编程-->客户端协议处理框架
  精通Spring-->通过Axios访问服务器
  Vue3开发-->Vue CLI脚手架工具
  Android静默安装的实现
  Android网络开发-请求队列-性能提升解决方案
  用Gradle 构建你的android程序
  编译Irrlicht On Android
  如何提高Android代码的安全性
  Android数据存储之Content Providers
  Android OpenGL 学习笔记
  Android Camera2.0 结合ImageReader拍照并解决图片偏转问题
  Bitmap压缩原理解析与Android 7.0之前通过NDK使用libjpeg库高...
  Android仿Volley手写属于自己的万能网络访问框架
  Android 开发环境搭建
  Android-商品展示案例
  Android访问WEBAPI,传递json
  MotionLayout 运动布局入门
  Android 代码混淆技术
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。