[关闭]
@Awille 2021-10-26T15:54:00.000000Z 字数 2513 阅读 108

Android View

Android View


1、View基础

1.1、什么是View

同时通过MotionEvent对象我们可以得到点击事件发生的x和y坐标。为此,系统提供了两组方法:getX/getY和getRawX/getRawY。它们的区别其实很简单,getX/getY返回的是相对于当前View左上角的x和y坐标,而getRawX/getRawY返回的是相对于手机屏幕左上角的x和y坐标。

2、View的滑动

通过三种方式可以实现View的滑动:第一种是通过View本身提供的scrollTo/scrollBy方法来实现滑动;第二种是通过动画给View施加平移效果来实现滑动;第三种是通过改变View的LayoutParams使得View重新布局从而实现滑动。

3、View的时间分发机制

点击事件的分发过程由三个很重要的方法来共同完成:

image.png-27.6kB

4、滑动冲突解决方案

5、viewRoot和DecorView

ViewRoot对应于ViewRootImpl类,它是连接WindowManager和DecorView的纽带,View的三大流程均是通过ViewRoot来完成的。在ActivityThread中,当Activity对象被创建完毕后,会将DecorView添加到Window中,同时会创建ViewRootImpl对象,并将ViewRootImpl对象和DecorView建立关联。
View的绘制流程是从ViewRoot的performTraversals方法开始的,
image.png-36.8kB

6、MeasureSpec

7、获取view的宽高

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注