gallary与listview冲突

本文介绍了一个触摸事件处理逻辑的实现方式,包括如何通过MotionEvent判断触摸类型,并基于这些判断执行不同的操作,如移动、快照等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public boolean onTouchEvent(MotionEvent event) {
  if(mAction == TOUCH_ACTION_MOVE){
   return false;
  }
  boolean consumed = mGestureDetector.onTouchEvent(event);
//  if (event.getAction() == MotionEvent.ACTION_UP) {
//   if (mIsTouched || mIsDragging) {
//    processScrollSnap();
//    processGesture();
//   }
//  }
//  return super.onTouchEvent(event);
  return consumed;
 }
 
 public boolean dispatchTouchEvent(MotionEvent event) {
  boolean consumed = mGestureDetector.onTouchEvent(event);
  final int action = event.getAction();
  Log.d("eeeee", "dispatchTouchEvent action="+action+", mAction="+mAction);
  final float x = event.getX();   
        final float y = event.getY();
       
  switch(action){
  case MotionEvent.ACTION_DOWN:
   mAction = TOUCH_ACTION_NONE;
   mLastMotionX = x;
            mLastMotionY = y;
   break;
  case MotionEvent.ACTION_MOVE:
   int deltaX = (int) (mLastMotionX - x);
   int deltaY = (int) (mLastMotionY - y);
   if (mAction == TOUCH_ACTION_NONE) {
    if (Math.abs(deltaX) < 10 && Math.abs(deltaY) > 10) {
     mAction = TOUCH_ACTION_MOVE;
    } else if (Math.abs(deltaX) > 10 && Math.abs(deltaY) < 10) {
     mAction = TOUCH_ACTION_SNAP;
    }
    break;
   }
   if(mAction == TOUCH_ACTION_SNAP){
    return true;
   }else if(mAction == TOUCH_ACTION_MOVE){
    return super.dispatchTouchEvent(event);
   }
   break;
  case MotionEvent.ACTION_UP:
   if (mIsTouched || mIsDragging) {
    processScrollSnap();
    processGesture();
    return consumed;
   }
   mAction = TOUCH_ACTION_NONE;
  default:
   mAction = TOUCH_ACTION_NONE;
   break;
  }
//  return consumed;
  return super.dispatchTouchEvent(event);
  
 }
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhchzh1000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值