Android Touch事件传递详解

(4)总之我拿到这个事件(苹果)会往我的孩子进行传递,我的孩子也可以往他的孩子进行传递和消费,这样转往下走,如果有一个孩子消费掉这个事件(吃掉苹果),那么该事件结束。如果孩子都不消费那么就会从最下面的孩子一层层传上来传到我手里进行处理。

(5)记住 分发 拦截 处理。任何孩子拿到该事件第一步就是往下面分发,如果中途有拦截那么久就自己处理,直到分到最底层就辈分最低的孩子,如果该事件就往上给父亲处理。

在这里插入图片描述

四、主要方法介绍


(1)dispatchTouchEvent(MotionEvent event)

决定touch事件是否派发。在View和Activity中都有这个方法。

(2)onTouchEvent(MotionEvent event)

如果返回true,则表示这个事件被消费掉,如果返回false则将事件向上一层父容器传递。

(3)onInterceptTouchEvent(MotionEvent ev)

是否拦截touch事件,如果拦截,则不传递事件到子View,否则事件继续传递给子View,所以这个接口只有ViewGroup的派生类才有,View是没有该接口的。

五、代码分析


自定义ViewGroup,和View的子类,重写消息传递的几个方法:

public class TouchView extends View {

private static final String TAG = TouchView.class.getSimpleName();

public TouchView(Context context, AttributeSet attrs) {

super(context, attrs);

}

@Override

public boolean onTouchEvent(MotionEvent event) {

Log.d(TAG, “TouchView onTouchEvent action=” + event.getAction());

return true;

}

@Override

public boolean dispatchTouchEvent(MotionEvent event) {

Log.d(TAG, “TouchView dispatchTouchEvent action=” + event.getAction());

return super.dispatchTouchEvent(event);

}

}

public class TouchViewGroup extends FrameLayout {

private static final String TAG = TouchView.class.getSimpleName();

public TouchViewGroup(Context context, AttributeSet attrs) {

super(context, attrs);

}

@Override

public boolean dispatchTouchEvent(MotionEvent ev) {

Log.d(TAG, “TouchVIewGroup dispatchTouchEvent action=” + ev.getAction());

boolean dispatch = super.dispatchTouchEvent(ev);

return dispatch;

}

@Override

public boolean onTouchEvent(MotionEvent event) {

Log.d(TAG, “TouchVIewGroup onTouchEvent action=” + event.getAction());

return super.onTouchEvent(event);

}

}

public class MainActivity extends AppCompatActivity {

private static final String TAG = TouchView.class.getSimpleName();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

@Override

public boolean dispatchTouchEvent(MotionEvent event) {

Log.d(TAG, “MainActivity dispatchTouchEvent action=” + event.getAction());

return super.dispatchTouchEvent(event);

}

}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

文末

架构师不是天生的,是在项目中磨练起来的,所以,我们学了技术就需要结合项目进行实战训练,那么在Android里面最常用的架构无外乎 MVC,MVP,MVVM,但是这些思想如果和模块化,层次化,组件化混和在一起,那就不是一件那么简单的事了,我们需要一个真正身经百战的架构师才能讲解透彻其中蕴含的深理。

移动架构师

系统学习技术大纲

一线互联网Android面试题总结含详解(初级到高级专题)

image

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

)]

[外链图片转存中…(img-WzExDE82-1711762147077)]

一线互联网Android面试题总结含详解(初级到高级专题)

[外链图片转存中…(img-hD43nej0-1711762147077)]

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!
  • 17
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值