GestureDetector类的用法



不要重复造轮子。 很多控件都为我们提供了双击等事件的处理。但还是有一部分控件没用提供较好的帮助。 那么我们就可以使用GestureDetector来弥补此处的不足。 尽量不要自己去重复实现双击等事件。 因为这样你会损失掉一部分内容。

步骤:

1. 在onCreate 方法中去创建

  mGestureDetector = new GestureDetector(this, new MyGestureListener()); 


2. 把普通的触摸事件,抛给GestureDetector来处理

复制代码
控件.setOnTouchListener(new OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                //采用手势来处理
                return this.gestureDetector.onTouchEvent(event);
            }
        });
复制代码


3. 实现自己的GestureDetector,完成代码:MyGestureListener。


下面就要介绍一怎样扩展MyGestureListener来实现我们的功能需求。

1. 双击事件:

复制代码
gestureDetector.setOnDoubleTapListener(new OnDoubleTapListener() {
            @Override
            public boolean onSingleTapConfirmed(MotionEvent e) {
                return false;
            }
            
            @Override
            public boolean onDoubleTapEvent(MotionEvent e) {
                return false;
            }
            
            @Override
            public boolean onDoubleTap(MotionEvent e) {
                //事件处理,普通是双击都是这么干的。
                return false;
            }
        });
复制代码

2. 水平移动,判断是水平移动还是垂直移动的事件。

复制代码
       @Override
            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
                if(Math.abs(e1.getX() - e2.getX()) - Math.abs(e1.getY() - e2.getY()) > 0) {
                    Toast.makeText(NewViewActivity.this, "xxxx", Toast.LENGTH_SHORT).show();
                } else{
                    Toast.makeText(NewViewActivity.this, "yyyy", Toast.LENGTH_SHORT).show();
                }
                return false;
            }
复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用GestureDetector来监听ImageView的手势事件,您可以按照以下步骤进行实现: 1. 在Activity或Fragment中创建GestureDetector对象: ``` private GestureDetector mGestureDetector; ``` 2. 在onCreate或onCreateView方法中初始化GestureDetector对象: ``` mGestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() { @Override public boolean onSingleTapUp(MotionEvent e) { // 处理单击事件 return super.onSingleTapUp(e); } @Override public void onLongPress(MotionEvent e) { // 处理长按事件 super.onLongPress(e); } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { // 处理滑动事件 return super.onScroll(e1, e2, distanceX, distanceY); } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { // 处理快速滑动事件 return super.onFling(e1, e2, velocityX, velocityY); } }); ``` 3. 在ImageView上添加TouchListener,并在onTouch方法中将事件交给GestureDetector处理: ``` imageView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return mGestureDetector.onTouchEvent(event); } }); ``` 通过以上步骤,您就可以在ImageView上监听手势事件了。当用户在ImageView上进行手势操作时,GestureDetector会自动调用相应的回调方法,您可以在回调方法中实现自己的逻辑,例如处理单击、双击、长按等事件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值