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

   利用触摸屏的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-04-18 18:54:12 重新编辑]
网站系统异常


系统异常信息
Request URL: http://www.javathinker.net/WEB-INF/lybbs/jsp/topic.jsp?postID=3141

java.lang.NullPointerException

如果你不知道错误发生的原因,请把上面完整的信息提交给本站管理人员