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);
}
相关推荐
明川13 小时前
Android Gradle - ASM + AsmClassVisitorFactory插桩使用
android·前端·gradle
csdn122598733613 小时前
Android将应用添加到默认打开方式
android
百锦再14 小时前
京东云鼎入驻方案解读——通往协同的“高架桥”与“快速路”
android·java·python·rust·django·restful·京东云
成都大菠萝14 小时前
1-2-3 Kotlin与C++基础-JNI原理与使用
android
TimeFine14 小时前
Android AI解放生产力(六)实战:解放页面开发前的繁琐工作
android·架构
心静财富之门14 小时前
a.py打包加密
android
成都大菠萝15 小时前
1-2-2 Kotlin与C++基础-C++基础语法与内存管理
android
陈希瑞15 小时前
【保姆级教程】安卓手机免Root一键部署AutoGLM:支持语音控制与自动化操作
android·智能手机·自动化
TheNextByte115 小时前
如何将联系人从Android传输到计算机的 6 种方法
android
喂_balabala15 小时前
excludeFromRecents
android