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);
}
相关推荐
我命由我1234530 分钟前
Android 对话框 - 对话框全屏显示(设置 Window 属性、使用自定义样式、继承 DialogFragment 实现、继承 Dialog 实现)
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
怪兽20142 小时前
请例举 Android 中常用布局类型,并简述其用法以及排版效率
android·面试
应用市场2 小时前
Android Bootloader启动逻辑深度解析
android
爱吃水蜜桃的奥特曼2 小时前
玩Android Harmony next版,通过项目了解harmony项目快速搭建开发
android·harmonyos
shaominjin1232 小时前
Android 中 RecyclerView 与 ListView 的深度对比:从设计到实践
android
vocal3 小时前
【我的AOSP第一课】AOSP 下载、编译与运行
android
Lei活在当下3 小时前
【业务场景架构实战】8. 订单状态流转在 UI 端的呈现设计
android·设计模式·架构
小趴菜82273 小时前
Android中加载unity aar包实现方案
android·unity·游戏引擎
qq_252924193 小时前
PHP 8.0+ 现代Web开发实战指南 引
android·前端·php
Jeled3 小时前
Android 本地存储方案深度解析:SharedPreferences、DataStore、MMKV 全面对比
android·前端·缓存·kotlin·android studio·android jetpack