Android View 事件处理源码中,有哪些细节值得反复琢磨?

摘要:前言 Android View 的 事件处理在我们的编程中,可谓是无处不在了。但对于大多数人而言,一直都是简单的使用,对其原理缺乏深入地认识。 学 Android 有一段时间了,最近发现,很多基础知识开始有些遗忘了,所以从新复习了 View
前言 Android View 的 事件处理在我们的编程中,可谓是无处不在了。但对于大多数人而言,一直都是简单的使用,对其原理缺乏深入地认识。 学 Android 有一段时间了,最近发现,很多基础知识开始有些遗忘了,所以从新复习了 View 的事件分发。特地整理成了这篇文章分享给大家。 本文不难,可以作为大家茶余饭后的休闲。 祝大家阅读愉快! 方便大家学习,我在 GitHub 上建立个 仓库 仓库内容与博客同步更新。由于我在 稀土掘金 简书 CSDN 博客园 等站点,都有新内容发布。所以大家可以直接关注该仓库,即使获得精彩内容 仓库地址: 超级干货!精心归纳 Android 、JVM 、算法等,各位帅气的老铁支持一下!给个 Star ! 一、View 的事件回调 我们结合源码看看 View 的事件分发是个怎样的过程,首先我们建立一个类 MyButton 类继承 AppCompatButton 用于测试: public class MyButton extends AppCompatButton { private final String TAG = "DeBugMyButton"; public MyButton(Context context) { super(context); } public MyButton(Context context, AttributeSet attrs) { super(context, attrs); } public MyButton(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } } 1.1 事件分发流程 我们都知道有一个方法叫做 public boolean dispatchTouchEvent(MotionEvent event) 。首先我们要知道,对于我们这个自定义控件,他的触摸事件都是从我们 dispatchTouchEvent 这个方法开始往下去分发的。所以可以说:这个方法是一个入口方法。
阅读全文