接下来我们再来看另外一个案例,正如上面界面上显示的两个条目,车辆选择和始发地点选择,他们都有一个共同的特点就是都有共同的标题,内容和右剪头按钮,这种情况下我们都会把它封装成一个组合的自定义View来显示它,我们现在来看一下它的

效果图:

用户的需求是这样的: 当用户在点击车辆选择的条目的时候他会跳转到另外一个页面上去,而用户在事发地点上点击请输入的时候是可以输入文字信息的,也就是说有两种需求,一种处于不可编辑状态点击整个条目要进行事件拦截,另外一种处于可编辑状态事件,点击请输入需要弹出软键盘可输入文字,也就是点击的时候不需要拦截可直接传递给子View EditText,很显然我们的自定义设置条目需要一个是否可以编辑的开关,当处于不可编辑的状态的时候,点击的时候拦截该事件,当处于可编辑状态的时候,事件可以继续往下分发。

关键代码:

public class SettingBarView extends RelativeLayout {(http://www.amjmh.com)
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
//当处于不可编辑状态的时候拦截该事件,否则该事件就继续往下分发
return !isEdit;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
//当拦截该事件的时候就把它分发给自己的根View,响应全局的点击事件
return layoutSettingBar.onTouchEvent(event);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
好了,今天的两个小案例就讲完了,需求很简单,通过这两个案例的实操,我们进一步的加深了android事件分发机制的理解,项目案例的完整代码我已经分享到github上了,使用过程中有任何问题,请在文章下方留言,下一篇我们讲一个更加复杂的案例,来进一步帮助大家理解事件分发机制在实战开发当中的应用。

最新文章

  1. 【Python五篇慢慢弹】快速上手学python
  2. 【Swift】 应用内显示 AppStore 某个应用的详情
  3. html/css小练习1
  4. 【管理心得之四十】中文“其他”、英文“other”、日文“その他”..........................................
  5. C# String.split()用法小结。String.Split 方法 (String[], StringSplitOptions)
  6. Win10 UAP 标题栏
  7. 用php做了下冒泡排序
  8. 文件上传ajaxfileupload.js插件
  9. JS 学习笔记--4---运算符
  10. MongoDB - MongoDB CRUD Operations, Query Documents, Project Fields to Return from Query
  11. 将数据库从普通文件系统迁移到ASM中
  12. Codeforces round #353div2 C
  13. 10条PHP编程习惯
  14. Apache 2.2 到 2.4的不同
  15. 字符设备驱动[深入]:linux cdev详解
  16. Tomcat剖析(二):一个简单的Servlet服务器
  17. JS中有关正则表达式的一些常见应用
  18. Java中interrupt的使用
  19. 【译】索引进阶(一):SQL SERVER索引介绍
  20. spark-sql集合的“条件过滤”,“合并”,“动态类型映射DataFrame”,“存储”

热门文章

  1. 刷机,twrp,安装xposed
  2. mysql5.6
  3. Linux目录机构及目录管理
  4. 在Vue项目中加载krpano全景图
  5. RocketMQ 源码分析 —— Message 发送与接收
  6. 错误 “SCRIPT7002: XMLHttpRequest: 网络错误 0x2ef3, ie浏览器兼容问题
  7. Laravel session的保存机制
  8. 一、Core授权-2 之.net core 基于Jwt实现Token令牌
  9. 通过lua扩展nginx
  10. cnblogs博客使用LaTeX公式