ViewGroup的源码解读
我们之前刚刚分析完事件传递机制和view的源码,如果没有看过的,建议看完View的事件拦截机制浅析以及View的事件源码解析。这次我们来分析下viewgroup的。
可能有人会想,怎么又是源码分析,肯定又是一大通。其实没你想的那么复杂。仔细分析一波就行了。
解读ViewGroup我们都知道,一个事件完整的流程是从dispatchTouchevent–>onInterceptTouchevent–>onTouchEvent。我们先不说事件监听的问题。上述三个步骤就是正常一个点击的流程。前面我们分析view的时候发现它并没有onInterceptTouchevent这个方法。这个我之前有提到,view已经是最底层了,所以就不需要拦截了。而这一整套的机制就是在ViewGroup中体现出来的。我们先来看一张图:
触摸事件发生后,在Activity内最先接收到事件的是Activity自身的dispatchTouchEvent,然后Activity传递给Activity的Window。接着Window传递给最顶端的View,也就是DecorView。接下来才是我们熟悉的触摸事件流程:首 ...
View的事件源码分析
上次刚刚分析了view的事件拦截机制,那么这次我们通过源码来分析一波view的事件,如果对view的事件不了解的,可以先看View的事件拦截浅析
解析View源码既然是分析源码,那么我们就要找准入手点,不然几万行代码看完在整理完还是很累的。既然是事件的分析,我们就应该知道从哪入手。就是touchevent了。
首先,我们先了解下下面几个属性,这肯定是和事件有关的。
1.clickable:控制当前view是否可以点击
2.longclickable:控制当前view是否可以长按
3.foucsable:是否可以获取当前view的焦点(一般用于edittext)
4.enable:是否可以选中
5.saveenable:状态保存,和activity的savedInstanceState类似
6.setOnTouchListener:触摸事件
7.setOnLongClickListener:长按事件
8.setClickListener:点击事件
上次我们讲过view的事件是从dispatchtouchevent–>onTouchEvent。这边我就不写自定义view了。普通一个v ...
View的事件机制分析
为什么要去分析view的事件关于view的事件,百度google一搜。一批又一批。但是能让人理解的少之又少。换句话说,不是那些作者不懂。只是说,他懂了,但他讲解后不一定能让别人看得懂。我记得有人问我当初是怎么接触自定义view这东西的。因为他们觉得自定义view这个东西很难。我就回了如下几句话:自定义view你把paint和canvas。弄懂了基本也就差不多了。我这边说的是差不多,不是完全,你们别曲解哈= =当然前提是数学和物理要好= =。对于View来说,我认为,paint和canvas都不是重点,如何分析他的事件处理才是重点。下面我们一步步的来了解。
View的结构想要了解view的事件,他的结构我们是需要知道的,我们先放一张view的结构图。然后根据图来一步步分析:最顶层的PhoneWindow是什么呢?通过字面意思,我们知道他是手机窗口。我们需要知道window到底是什么才能分析phonewindow的作用。
简单来说,Window是一个抽象类,是所有视图的最顶层容器,视图的外观和行为都归他管,不论是背景显示,标题栏还是事件处理都是他管理的范畴,虽然能管的事情看似很多,但是没实 ...