Android 事件分发之动态的决定某个View来处理事件

现在我的需求是动态的决定某个View来处理事件。这个View可能位于最顶上,也可能被别的View遮盖。

思路

1 重写Viewgroup dispatchTouchEvent,这个方法是始终都能接受到事件的

less 复制代码
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
   if(ev.getAction() == MotionEvent.ACTION_DOWN){
      //根据自己的需求找出需要处理事件的View
   }
}

2 第二步 View自己决定自己是否处理事件 重写 dispatchTouchEvent 来决定自己是否处理事件。

scss 复制代码
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
    //如果是多选模式 不存在这个问题
     ViewGroup parent = (ViewGroup) getParent();
     if(parent.isHasHitView()){
          //判断自己是否是那个应该处理事件的View
          if(this != parent.getHitView())return false;
     }
    return super.dispatchTouchEvent(event);
}
相关推荐
安卓理事人1 天前
安卓LinkedBlockingQueue消息队列
android
万能的小裴同学1 天前
Android M3U8视频播放器
android·音视频
q***57741 天前
MySql的慢查询(慢日志)
android·mysql·adb
JavaNoober1 天前
Android 前台服务 "Bad Notification" 崩溃机制分析文档
android
城东米粉儿1 天前
关于ObjectAnimator
android
zhangphil1 天前
Android渲染线程Render Thread的RenderNode与DisplayList,引用Bitmap及Open GL纹理上传GPU
android
火柴就是我1 天前
从头写一个自己的app
android·前端·flutter
lichong9511 天前
XLog debug 开启打印日志,release 关闭打印日志
android·java·前端
用户69371750013841 天前
14.Kotlin 类:类的形态(一):抽象类 (Abstract Class)
android·后端·kotlin
火柴就是我1 天前
NekoBoxForAndroid 编译libcore.aar
android