Provides classes that expose basic user interface classes that handle screen layout and interaction with the user
官网关于View是如上概括的,大概意思是提供处理屏幕布局和用户交互界面类的接口。
注解类
- ViewDebug.CapturedViewProperty:这个注解可以用来标记捕获视图时要转储的字段和方法。带有这个注解的方法必须没有参数,并且必须返回一个有效类型的数据
- ViewDebug.ExportedProperty:这个注解可以用来标记视图服务器转储的字段和方法。只有没有参数的非void方法才能被这个注解注释掉。
- ViewDebug.FlagToString:定义从一个标志到一个字符串的映射。这样的映射可以在@ExportedProperty中使用,为最终用户提供更有意义的值。
- ViewDebug.IntToString:定义从int值到String的映射。这样的映射可以在@ExportedProperty中使用,为最终用户提供更有意义的值。
重点标记的接口
- CollapsibleActionView:当一个View实现这个接口时,它将在扩展或折叠时作为一个动作视图接收回调,以及可选的,应用程序指定的对MenuItem.OnActionExpandListener的回调。
- GestureDetector.OnContextClickListener:当context发生点击时回调
- GestureDetector.OnDoubleTapListener:当双击或者确认单击时回调
View
表示构建用户界面的基础类。在屏幕中是一块用来绘制和处理事件的矩形区域。View是用来创建用户交互界面(按钮、文本框等)组建的基类。ViewGroup子类是布局的基类,它是不可见的容器,用于存放其他视图(或其他视图组),并定义其布局属性。
为了实现一个自定义的视图,你通常会首先提供一些框架在所有视图中调用的标准方法的重写。您不需要覆盖所有这些方法。实际上可以只重写onDraw()方法。下面是一些自定义View时需要了解的方法:
- 创建
- Constructors 构造方法:当从代码创建视图时调用构造函数的一种形式,以及从布局文件xml视图时调用的形式。第二种形式应解析和应用布局文件中定义的任何属性。
-
onFinishInflate():当view和它的子布局都从xml加载出来后回调此方法
- 布局
-
onMeasure(int, int):当请求获取view以及它的所有子view的大小时回调 -
onLayout(boolean, int, int, int, int):当view需要给所有的子布局分配空间和设置位置时调用 -
onSizeChanged(int, int, int, int):当view的大小改变时回调
- 绘制
-
onDraw(android.graphics.Canvas):当view要呈现其内容时调用
- 事件处理
-
onKeyDown(int, KeyEvent):当发生新的硬件按键事件时调用 -
onKeyUp(int, KeyEvent):当发生硬件按键事件时调用 -
onTrackballEvent(MotionEvent):当轨迹球移动事件发生时调用 -
onTouchEvent(MotionEvent):当触摸屏幕事件发生时调用
- 焦点
-
onFocusChanged(boolean, int, android.graphics.Rect):当view获取或者失去焦点时调用 -
onWindowFocusChanged(boolean):当包含view的窗体得到或失去焦点时调用
- 填充(Attaching)
-
onAttachedToWindow():当view填充到窗体上时调用 -
onDetachedFromWindow():当view从窗体上分离时调用 -
onWindowVisibilityChanged(int):当包含view的窗体显隐状态发生改变时调用
Position
-
View的getLeft()和getRight()和getTop()和getBottom() -
View的getY(),getTranslationY()和getTop()之间的联系 -
View的getScroolY和View的scrollTo()和scrollBy() -
event.getY()和event.getRawY()
先来看个截图:
screen.png
最大的草绿色区域时屏幕界面,红色次大的区域我们称之为“应用界面区域”。屏幕顶端,应用界面之外的区域含有运营商,电池时间等称之为“状态栏”。一般应用界面会含有标题栏也就是紫色标记的区域。
View.getLeft()
View.getRight()
View.getTop()
View.getBottom()
这四个方法是获取View针对其直接父布局的左上角和右下角的的坐标。View.getLeft()是左上角的x坐标,View.getTop()是左上角的Y坐标。。View.getRight()是右下角的x坐标,View.getBottom()是右下角的Y坐标。
举个例子:求标题栏的left,top,right,bottom。相对于它的直接父布局为红色应用区域,红色区域左上角为坐标系原点。以actionBar和180*800的屏幕为例,actionBar高度为58px则左上角,右下角的坐标分别为(0,0)和(480,58)
未完待续···














网友评论