>>分享Android开发相关的技术 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 19171 个阅读者 刷新本主题
 * 贴子主题:  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开发-->使用Session(Ⅰ)
  JSP与Hibernate开发-->Spring、JPA与Hibernate的整合
  Java网络编程-->Java反射机制
  精通Spring-->Vue Router路由管理器
  Vue3开发-->Vue简介
  Android UI学习 - TableLayout
  Android实用测试方法之Monkey与MonkeyRunner
  Android多线程及异步处理问题
  Android多屏幕适配
  Android Fragments 详细使用
  Android HelloGallery范例实验记录
  从Android中Activity之间的通信说开来
  Android多线程及异步处理问题
  Android OpenGL 学习笔记
  Android内核开发:图解Android系统的启动过程
  一款在Linux下运行Android应用的软件:xDroid
  Android-商品展示案例
  Flutter 插件开发:以微信SDK为例-Android架构的博客
  Android开发学习笔记:Intent的简介以及属性的详解-IT的点点...
  Android中使用Activity管理类
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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