标签:
onDraw(android.graphics.Canvas)
.开始。类别 | 方法 | 描述 |
---|---|---|
Creation | 构造函数 | 第一个构造函数在view创建时会被调用。第二个构造函数试图解析并应用任何在布局文件中定义的属性(attributes ) |
|
Called after a view and all of its children has been inflated from XML. | |
Layout |
|
在确定view及其所有子节点的大小时 调用 |
|
当view需要为其所用的子节点分配位置和大小时 调用 | |
|
当view的大小改变时 调用 | |
Drawing |
|
当view需要绘制其内容时 调用 |
Event processing |
|
当新的按键按下事件发生时 调用 |
|
当按键弹起事件发生时 调用 | |
|
当轨迹球移动事件发生 调用 | |
|
当屏幕点击事件发生 调用 | |
Focus |
|
当view获得或失去焦点时 调用 |
|
当包含view的window获得或失去焦点时 调用 | |
Attaching |
|
当view附加到window上时 调用 |
|
当view从window上分离时 调用 | |
|
当包含view的window的可见性改变时 调用 |
<Button
android:id="@+id/my_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/my_button_text"/>
Button myButton = (Button) findViewById(R.id.my_button);
getLeft()
和getTop()
.可以取得view的位置信息。前者返回left或者X坐标,后者返回top或者Y坐标。返回的位置信息都是相对于父view而言的。例如,getLeft()返回了20,意味着该view位于父view的左边缘向右偏移20像素的位置。getWidth()
and getHeight()
.获得。setPadding(int,
int, int, int)
or setPaddingRelative(int,
int, int, int)
getPaddingLeft()
, getPaddingTop()
,getPaddingRight()
, getPaddingBottom()
, getPaddingStart()
, getPaddingEnd()
.measure(int,
int)
并且自顶向下遍历view tree。当递归发生时,在这颗树中的每一个view的尺寸大小都进行叠加。最后,存储了每个view的测量值。布局过程发生在 layout(int,
int, int, int)
时,也是自顶向下的。在这个过程中每个父节点都负责使用在测量过程中计算出的大小数值定位其所有的子节点。getMeasuredWidth()
和getMeasuredHeight()就
可以获取到值了,并不包括该节点下的所有子节点。一个view的测量宽高值必须遵循父view的约束条件。这样便能保证在测量结束时所有的父节点都能接受所有子节点的尺寸。父view会多次为其子view调用measure()。例如,父类会去测量那些未指明大小的子view一次以确定它们的大小,如果它们的和太小或太大,会再次为它们调用measure()并传递实际数字。View.MeasureSpec
类被子view用来告知其父view要如何测量和定位。LayoutParams基类仅仅通过宽高来描述view期望的大小。每一个测量,都能指定以下的一个:requestLayout()
.invalidate()
.requestLayout()
or invalidate()
,框架会适当的留心测量、布局和绘图树。setFocusable(boolean)
. 在触摸模式view通过isFocusableInTouchMode() 表明是否可以一直获得焦点,可调用setFocusableInTouchMode(boolean)
.改变。nextFocusDown
nextFocusLeft
nextFocusRight
nextFocusUp
requestFocus()
.isFocusableInTouchMode()
为真才会变为可聚焦的,例如文本编辑框。其它的views仍旧可触摸,例如buttons,当触摸它时文本框并不会失去焦点;它们(buttons)只会在点击事件中激发ALPHA
属性,和所有的变换相关的属性(例如TRANSLATION_X
and TRANSLATION_Y
. )一样。这些属性在类似于setter/getter形式的Property表单中
起作用。这些属性能够被用来设置在相关view上呈现出来的持续状态。属性和方法也可以用来集合Animator
-动画。详情请看动画章节ViewPropertyAnimator
类让视图动画更加高效和方便。Animation
对象,通过setAnimation(Animation)
or startAnimation(Animation)
. 动画可以改变尺度、旋转、翻转和透明视图。如果被添加动画的视图有子视图,动画效果会作用于以其为根的整个子树。当动画开始时,框架会注意重绘适当的view指导动画结束setFilterTouchesWhenObscured(boolean)
或者设置 android:filterTouchesWhenObscured
布局属性为true。当启用时,如果view的窗口被其它可见窗口遮挡,框架将会丢弃每次收到的触摸。结果,每当一个toast,dialog或者其他窗口出现在该view的窗口之上时,该view将永远也收不到触摸。标签:
原文地址:http://blog.csdn.net/yh_android_blog/article/details/51828500