CoordinatorLayout

原文地址

public class CoordinatorLayout
extends ViewGroup implements NestedScrollingParent

java.lang.Object
   ↳android.view.View
      ↳android.view.ViewGroup
         ↳android.support.design.widget.CoordinatorLayout


CoordinatorLayout是一个更为强大的FrameLayout。
CoordinatorLayout有两个主要的用法:
1. 作为顶层应用的装饰或者chrome的布局;
2. 作为一个能响应特定的一个或多个子视图交互的容器。

通过对CoordinatorLayout子视图进行Behaviors的声明,你可以向这些子视图提供许多不同的和其父视图以及和其他子视图的交互方法。View类可以通过注释一个DefaultBehavior来声明一个behavior作为CoordinatorLayout子视图的系统默认behavior。

Behaviors可以用于实现各种交互和附加布局的变化,包括图片和面板的滑动,点击会消失元素和按钮等等的行为都可以依赖于其他子视图的变化而变化。
一个CoordinatorLayout的子视图可能有一个achor,该子视图的id必须对应任意一个CoordinatorLayout的后代,但是这个子视图不一定是CoordinatorLayout固定的子视图或者这个子视图的后代。

子视图可以通过重写insetEdge来描述布局如何协调该子视图。
任何子视图都将通过dodgeInsetEdges被适当地移动,保证相互不重叠。

概要

内部类

class | CoordinatorLayout.Behavior< V extends View > | CoordinatorLayout子视图的互动行为插件。

@interface | CoordinatorLayout.DefaultBehavior | 定义一个View类的默认 。CoordinatorLayout.Behavior。

class | CoordinatorLayout.LayoutParams | 描述一个CoordinatorLayout子视图所需的布局参数。

class | CoordinatorLayout.SavedState

继承的XML属性

从 android.view.ViewGroup类继承

从 android.view.View类继承

继承的常数

从 android.view.ViewGroup类继承

从 android.view.View类继承

继承的域

从 android.view.View类继承

公共构造函数

CoordinatorLayout(Context context)

CoordinatorLayout(Context context, AttributeSet attrs)

CoordinatorLayout(Context context, AttributeSet attrs, int defStyleAttr)

Public方法

dispatchDependentViewsChanged
void dispatchDependentViewsChanged (View view)

允许调用者通过onDependentViewChanged(CoordinatorLayout parent, V child ,View dependency)手动调整子视图于CoordinatorLayout.Behavior中的依赖视图。
你通常不需要调用此方法,因为将当视图改变该方法将自动完成。

参数

view | View: 目标依赖视图

doViewsOverlap
boolean doViewsOverlap (View first, View second)

检查两个视图是否相互重叠,注意,这两个视图需要是该CoordinatorLayout中的同一层级的视图

参数

first | View:第一个被测试的子视图
second | View:第二个被测试的子视图

返回

boolean | true:当两视图均可见且重叠

generateLayoutParams
CoordinatorLayout.LayoutParams generateLayoutParams (AttributeSet attrs)

返回基于新的属性基础上设置的布局参数。

参数

attrs | AttributeSet:构建布局参数的属性基础

返回

CoordinatorLayout.LayoutParams | 一个ViewGroup.LayoutParams或其子代的实例

getDependencies
List getDependencies (View child)

返回指定子视图的依赖视图列表。注意,请勿储存此表格,此表格脱离了请求者将无效

参数

child | View:寻找依赖视图的指定子视图

返回

List | 该指定子视图的依赖视图列表

getDependents
List getDependents (View child)

返回依赖指定子视图的视图列表。注意,请勿储存此表格,此表格脱离了请求者将无效

参数

child | View:寻找被依赖的指定子视图

返回

List | 依赖该指定子视图的视图列表

getNestedScrollAxes
int getNestedScrollAxes ()

返回这个ViewGroup的当前嵌套滚动轴
一个ViewGroup当前在层次结构中作为一个或多个后代视图的嵌套滚动父类时,会返回除了SCROLL _ AXIS _ NONE之外的其他东西。

返回

int | 指示当前嵌套滚动轴的标志 (横滚,竖滚,两个方向滚)

getStatusBarBackground
Drawable getStatusBarBackground ()

获取在状态栏中用于绘制背景区域的drawable。

返回

drawable | 状态栏背景的绘制drawable,如果没有设置为空

isPointInChildBounds
boolean isPointInChildBounds (View child, int x, int y)

检查CoordinatorLayout中给定点的坐标是否在给定的直接子视图的视图范围内。

参数

child | View:待测试的子视图
x | int:在CoordinatorLayout坐标系中待测试的X坐标
y | int:在CoordinatorLayout坐标系中待测试的Y坐标

返回

boolean | true:若该点在子视图的试图范围内

isPointInChildBounds
boolean isPointInChildBounds (View child, int x, int y)

当视图连接到屏幕时调用,这时候视图获得了一个平面并开始绘制。注意,在onDraw(android.graphics.Canvas)之前,该函数必须保证被调用
当然,在第一个onDraw之前的任意时间它都可以被调用(包括在onMeasure(int, int))之前或者之后。

onDetachedFromWindow
void onDetachedFromWindow ()

当视图脱离屏幕时调用,这时候视图失去进行绘制的平面。

onDraw
void onDraw (Canvas c)

执行这个方法来完成你的绘图。

参数

c | Canvas: 即将绘制背景的Canvas

onInterceptTouchEvent
boolean onInterceptTouchEvent (MotionEvent ev)

执行此方法拦截所有触摸屏运动事件。该方法允许你将监听的要求发送给子类,并在任意子类的任意点上都能获取确切的滑动手势。
使用这个函数时一定要注意,由于它与View.onTouchEvent(MotionEvent)具有相当复杂的交互作用,并且要使用它的话需要以正确的方式实现本方法和上述方法。
以下是事件的接受顺序:

1.你将收到封闭事件。
2.这个封闭的事件要么将由这个视图组的一个子视图处理,要么由你自己的onTouchEvent()方法来处理;这意味着你需要让onTouchEvent()返回true,因而你才得以继续看到这个手势的其余部分(而不是寻找父视图来处理它)。同样,若通过从onTouchEvent()返回true的话,你不会在onInterceptTouchEvent()中收到任何后续事件,所有的触摸处理都必须像正常的那样在onTouchEvent()中进行处理。
3.只要你从这个函数中返回false,接下来的每个事件(包括最终的提交)都将首先在onInterceptTouchEvent ()传递,然后传递到目标的onTouchEvent()方法中。
4.如果你从这里返回true,你将不会收到以下事件:目标子视图将接收相同的事件但附带ACTION _ CANCEL,所有的事件将被传递到onTouchEvent()方法,并不再出现在这里。

参数

ev | MotionEvent:待测试的子视图
x | int:在CoordinatorLayout坐标系中待测试的X坐标
y | int:在CoordinatorLayout坐标系中待测试的Y坐标

返回

boolean | true:若该点在子视图的试图范围内

onLayoutChild
void onLayoutChild (View child, int layoutDirection)

调用以绘制每个单独的未使用Behavior定义行为子视图。Behavior也可以选择将子视图的尺寸传递给该方法处理

参数

child | View: 即将绘制的子视图
layoutDirection | int: CoordinatorLayout的布局方向,如LAYOUTDIRECTIONLTR(从左到右) 或LAYOUTDIRECTIONRTL(从右到左)

onMeasureChild
void onMeasureChild (View child, int parentWidthMeasureSpec, int widthUsed, int parentHeightMeasureSpec, int heightUsed)

调用以计算每个单独的未使用Behavior定义行为子视图的尺寸。 Behavior也可以选择将子视图的尺寸传递给该方法处理。

参数

child | View: 即将计算尺寸的子视图
parentWidthMeasureSpec | int: 这个视图的宽度要求
widthUsed | int: 父视图在水平方向使用的额外空间(也可能是其他子视图的父视图)
parentHeightMeasureSpec | int: 这个视图的高度要求
heightUsed | int: 父视图在垂直方向使用的额外空间(也可能是其他子视图的父视图)

onNestedFling
boolean onNestedFling (View target, float velocityX, float velocityY, boolean consumed)

从嵌套的滚动中请求一个快速滑动。
这个方法表示一个嵌套滚动中的子视图已经检测到快速滑动的条件。一般来说,这意味着一个已结束的接触滚动在滚动轴上的滚动速度,达到或超过最小的快速滑动速度。
如果一个嵌套滚动的子视图达到了快速滑动的条件,但它位于它自己的内容的边缘,他可以通过这个方法把这个快速滚动传递给它的嵌套滚动父视图。父视图可以随意消耗或者观察子视图的快速滑动。

参数

target | View:开始嵌套滚动的子视图
velocityX | float:像素的每秒水平速度
velocityY | float:像素的每秒垂直速度
consumed | boolean:true:如果子视图能够消耗这个快速滚动;false:其他情况

返回

boolean | true:若父视图继承或是其他东西响应了这个事件

onNestedPreFling
boolean onNestedPreFling (View target, float velocityX, float velocityY)

在目标视图完成一个嵌套快速滑动前作出响应。
这个方法表示一个嵌套滚动中的子视图已经检测在各轴上以给定速度进行的快速滑动。一般来说,这意味着一个已结束的接触滚动在滚动轴上的滚动速度,达到或超过最小的快速滑动速度。
如果一个嵌套滚动的父视图作为预滚动的一部分正在消耗部分滚动,那么它也可以使用预快速滑动来完成同样的动作。通过从这个方法返回true,父视图表示子视图不应该快速滚动自己的内部内容。

参数

target | View:开始嵌套滚动的子视图
velocityX | float:像素的每秒水平速度
velocityY | float:像素的每秒垂直速度

返回

boolean | true:若父视图在目标子视图前消耗了快速滚动

onNestedPreScroll
void onNestedPreScroll (View target, int dx, int dy, int[] consumed)

在目标视图消耗滚动的一部分之前,对正在进行的嵌套滚动进行响应。
当使用嵌套滚动时,父视图可能希望在子视图之前滚动。一个例子是包含可滚动列表的drawer,用户希望能够在列表本身开始滚动之前将列表完全滚动到视图中。
onNestedPreScroll当一个嵌套滚动子视图调用 dispatchNestedPreScroll(int, int, int[], int[])时被调用。这个实现应该报告在消耗数组的对象中有多少个对于dx和dy的像素被消耗了。索引0对应于dx,而索引 1对应dy。这个参数永远不会是空的。consumed[0] 和 consumed[1]的初始值永远为0。

参数

target | View:开始嵌套滚动的子视图
dx | int:水平像素位移
dy | int:垂直像素位移
consumed | int:输出。这个父进程消耗的水平和垂直滚动距离

onNestedPreScroll
void onNestedPreScroll (View target, int dx, int dy, int[] consumed, int type)

在目标视图消耗滚动的一部分之前,对正在进行的嵌套滚动进行响应。
当使用嵌套滚动时,父视图可能希望在子视图之前滚动。一个例子是包含可滚动列表的drawer,用户希望能够在列表本身开始滚动之前将列表完全滚动到视图中。
onNestedPreScroll当一个嵌套滚动子视图调用 dispatchNestedPreScroll(int, int, int[], int[])时被调用。这个实现应该报告在消耗数组的对象中有多少个对于dx和dy的像素被消耗了。索引0对应于dx,而索引 1对应dy。这个参数永远不会是空的。consumed[0] 和 consumed[1]的初始值永远为0。

参数

target | View:开始嵌套滚动的子视图
dx | int:水平像素位移
dy | int:垂直像素位移
consumed | int:输出。这个父进程消耗的水平和垂直滚动距离
type | int:触发滚动事件发生的类型

onNestedScroll
void onNestedScroll (View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed)

对正在进行的嵌套滚动进行响应。
此方法将于父视图的当前嵌套滚动子视图被分派了一个嵌套滚动事件时被调用。要接收对此方法的调用,父视图必须返回ture以调用onStartNestedScroll(View,View,int)
滚动距离的已消耗和未消耗部分都被报告给父视图。例如,一个实现可以选择使用所消耗的滚动的部分来匹配或追赶多个子视图的滚动位置。未消耗的部分可用于允许连续多个滚动或可拖动的元素的运动,例如在垂直的drawer中滚动一个列表,当列表滚动的内容到达边界时,drawer就会开始滚动个。

参数

target | View:控制嵌套滚动的子视图
dxConsumed | int:已经消耗的水平像素距离
dyConsumed | int:已经消耗的垂直像素距离
dxUnconsumed | int:未被消耗的水平像素距离
dyUnconsumed | int:未被消耗的垂直像素距离

onNestedPreScroll
void onNestedScroll (View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed, int type)

对正在进行的嵌套滚动进行响应。
此方法将于父视图的当前嵌套滚动子视图被分派了一个嵌套滚动事件时被调用。要接收对此方法的调用,父视图必须返回ture以调用onStartNestedScroll(View,View,int)
滚动距离的已消耗和未消耗部分都被报告给父视图。例如,一个实现可以选择使用所消耗的滚动的部分来匹配或追赶多个子视图的滚动位置。未消耗的部分可用于允许连续多个滚动或可拖动的元素的运动,例如在垂直的drawer中滚动一个列表,当列表滚动的内容到达边界时,drawer就会开始滚动个。

参数

target | View:控制嵌套滚动的子视图
dxConsumed | int:已经消耗的水平像素距离
dyConsumed | int:已经消耗的垂直像素距离
dxUnconsumed | int:未被消耗的水平像素距离
dyUnconsumed | int:未被消耗的垂直像素距离
type | int:触发滚动事件发生的类型

onNestedScrollAccepted
void onNestedScrollAccepted (View child, View target, int nestedScrollAxes, int type)

对成功的调用嵌套滚动操作作出应。
这个方法将在onStartNestedScroll返回true之后调用。它提供了视图及其超类执行嵌套滚动的初始配置的机会。如果存在这种方法,则该方法的实现应该总是调用它们的超类的实现方法。

参数

child | View:父视图直接包含的目标子视图
target | View:启动嵌套滚动的视图
nestedScrollAxes | int:滚动标记(SCROLL _ AXIS _ HORIZONTAL, SCROLL _ AXIS _ VERTICAL或者都是)
type | int:触发滚动事件发生的类型

onNestedScrollAccepted
void onNestedScrollAccepted (View child, View target, int nestedScrollAxes)

对成功的调用嵌套滚动操作作出应。
这个方法将在onStartNestedScroll返回true之后调用。它提供了视图及其超类执行嵌套滚动的初始配置的机会。如果存在这种方法,则该方法的实现应该总是调用它们的超类的实现方法。

参数

child | View:父视图直接包含的目标子视图
target | View:启动嵌套滚动的视图
nestedScrollAxes | int:滚动标记(SCROLL _ AXIS _ HORIZONTAL, SCROLL _AXIS _ VERTICAL或者都是)

onStartNestedScroll
boolean onStartNestedScroll (View child, View target, int nestedScrollAxes)

对生成一个可进行嵌套滚动操作的子视图作出响应,并声明嵌套滚动操作(如果合适的话)。
这个方法将在响应一个子视图调用startNestedScroll(int)时被调用。视图结构中的每个父视图都将有机会通过返回tue来响应和声明嵌套滚动操作。
这个方法可能会被父视图的实现覆盖,以表示视图何时愿意支持一个即将开始的嵌套滚动操作。如果它返回true,那么这个父视图将在滚动操作的持续时间中成为目标视图的嵌套滚动的父视图。

参数

child | View:父视图直接包含的目标子视图
target | View:启动嵌套滚动的视图
nestedScrollAxes | int:滚动标记(SCROLL _ AXIS _ HORIZONTAL, SCROLL _ AXIS _ VERTICAL或者都是)

返回

boolean | true:如果父视图接受嵌套滚动操作

onStopNestedScroll
void onStopNestedScroll (View target)

对一个嵌套滚动操作的结果进行响应。
在嵌套滚动操作之后执行清理。这个方法将在一个嵌套滚动停止是被调用,例如一个嵌套触摸滚动因ACTION _ UP或ACTION _ CANCEL事件而结束。如果存在这种方法,则该方法的实现应该总是调用它们的超类的实现。

参数

target | View:启动嵌套滚动的视图

onStopNestedScroll
void onStopNestedScroll (View target, int type)

对一个嵌套滚动操作的结果进行响应。
在嵌套滚动操作之后执行清理。这个方法将在一个嵌套滚动停止是被调用,例如一个嵌套触摸滚动因ACTION _ UP或ACTION _ CANCEL事件而结束。如果存在这种方法,则该方法的实现应该总是调用它们的超类的实现。

参数

target | View:启动嵌套滚动的视图
type | int:触发滚动事件发生的类型

onTouchEvent
boolean onTouchEvent (MotionEvent ev)

实现这个方法来处理触摸屏运动事件。
如果该方法用于检测单击操作,则建议通过调用和实现performClick()来执行操作。这将确保一致的系统行为,包括:
· 遵从公用的点击音效
· 分派OnClickListener请求
· 当辅助功能激活时,处理 ACTION _ CLICK

参数

ev | MotionEvent:运动事件

返回

boolean | true:如果事件被处理;false:其他

requestChildRectangleOnScreen
boolean requestChildRectangleOnScreen (View child, Rect rectangle, boolean immediate)

当群组的一个子视图想要一个特定的矩形显示在屏幕上时调用。ViewGroup重写这个方法可以保证:
· 子视图会是这个群组的直接子视图
· 矩形将会存在在子视图的内部坐标中
ViewGroup重写这个方法必须保证:
· 如果矩形已经可见,什么都不会改变
· 视图端口将被滚动,且滚动只足够使这个矩形可见

参数

child | View:提出请求的直接子代
rectangle | Rect:在子视图的坐标下的、子代希望在屏幕上的长方形,。
immediate | boolean:True:禁止动画或延迟滚动;false:其他

返回

boolean | 是否由群组处理这个操作

requestDisallowInterceptTouchEvent
void requestDisallowInterceptTouchEvent (boolean disallowIntercept)

当一个子视图不想让他的父视图和它的祖先视图调用onInterceptTouchEvent(MotionEvent)来拦截触摸事件时调用。
该父视图应该将请求提交到自己的父视图,且必须在触摸的持续时间里遵守这个请求(也就是说,只有在这个父视图收到一个up或一个cancel之后,才能清除它。)

参数

disallowIntercept | boolean:true:如果子视图不希望父视图拦截触控事件

setFitsSystemWindows
void setFitsSystemWindows (boolean fitSystemWindows)

设置该视图是否应该对系统屏幕的装饰(如状态栏和插入内容)进行响应,即控制是否准备执行fitSystemWindows(Rect)fitSystemWindows(Rect)的默认实现。请参阅该方法了解更多细节。
请注意,如果你正在提供自己的fitSystemWindows(Rect)实现,则不要将此标志设置为true————你的实现将覆盖检查此标志的默认实现。

参数

fitSystemWindows | boolean:true:将执行fitSystemWindows(Rect)的默认实现

setOnHierarchyChangeListener
void setOnHierarchyChangeListener (ViewGroup.OnHierarchyChangeListener onHierarchyChangeListener)

当从该视图的一个子视图被添加或删除时,注册一个回调函数。

参数

onHierarchyChangeListener | ViewGroup.OnHierarchyChangeListener:层级变化的回调函数

setStatusBarBackground
void setStatusBarBackground (Drawable bg)

在状态栏中设置一个drawable来绘制插入区域。请注意,只有DrawerLayout fitsSystemWindows时,才会被激活

参数

bg | Drawable:绘制在状态栏的背景drawable

setStatusBarBackgroundColor
void setStatusBarBackgroundColor (int color)

在状态栏中设置一个drawable来绘制插入区域。请注意,只有DrawerLayout fitsSystemWindows时,才会被激活

参数

color | int:绘制在状态栏的背景颜色(0xAARRGGBB 格式)

setStatusBarBackgroundResource
void setStatusBarBackgroundResource (int resId)

在状态栏中设置一个drawable来绘制插入区域。请注意,只有DrawerLayout fitsSystemWindows时,才会被激活

参数

resId | int:绘制在状态栏的背景drawable的资源Id

setVisibility
void setVisibility (int visibility)

设置该视图的可见性状态

参数

visibility | int: VISIBLE、 INVISIBLE 和 GONE 三选一

Protect方法

checkLayoutParams
boolean checkLayoutParams (ViewGroup.LayoutParams p)

参数

p | ViewGroup.LayoutParams

返回

boolean |

drawChild
boolean drawChild (Canvas canvas, View child, long drawingTime)

绘制该群组的一个子视图。这个方法负责将canvas放在正确的状态。这包括剪切、翻译,使子视图的滚动原点在(0,0)和允许任何动画转换。

参数

canvas | Canvas:用于绘制子视图的canvas
child | View:如何绘制
drawingTime | long:需要的绘制时间

返回

boolean | ture:如果 invalidate()已经完成

drawableStateChanged
void drawableStateChanged ()

每当视图的状态发生变化时,这个函数就会被调用,它会影响显示的drawables的状态。
如果视图有一个StateListAnimator,它也将被调用来运行必要的状态l来更改动画。
在重写这个函数时,一定要调用超类。

generateDefaultLayoutParams
CoordinatorLayout.LayoutParams generateDefaultLayoutParams ()

返回一组默认的布局参数。这些参数将在该视图传递到addView(View)且没有已经设置的布局参数时被请求。如果返回null,则从addView抛出一个异常。

返回

CoordinatorLayout.LayoutParams | 一组默认的布局参数或null

generateLayoutParams
CoordinatorLayout.LayoutParams generateLayoutParams (ViewGroup.LayoutParams p)

根据提供的布局参数返回一个安全的布局参数集。该方法将在视图组传递一个视图且其布局参数不通过checkLayoutParams(android . View . ViewGroup . layoutparams)测试时被调用。这个方法应该返回适合这个视图组的一组新的布局参数,可能通过从指定的布局参数中复制适当的属性来实现。

参数

p | ViewGroup.LayoutParams:将被转换为适合该视图组的布局参数的布局参数。

返回

CoordinatorLayout.LayoutParams | ViewGroup.LayoutParams或其某个后代的实例

getSuggestedMinimumHeight
int getSuggestedMinimumHeight ()

返回视图的最小建议高度。这将返回视图最小高度和背景最小高度(getMinimumHeight())的最大值
在使用时在 onMeasure (int,int),调用方仍应确保返回的高度是在父视图的要求之内。

返回

int | 视图的最小建议高度

getSuggestedMinimumWidth
int getSuggestedMinimumWidth ()

返回视图的最小建议宽度。这将返回视图最小宽度和背景最小宽度(getMinimumWidth())的最大值
在使用时在 onMeasure (int,int),调用方仍应确保返回的宽度是在父视图的要求之内。

返回

int | 视图的最小建议宽度

onLayout
void onLayout (boolean changed, int l, int t, int r, int b)

当视图应该为每个子视图分配一个大小和位置时从布局中调用该方法。拥有子视图的派生类应该重写此方法并调用每个子视图的布局。

参数

changed | boolean:对于此视图这是否是一个新的大小或位置
l | int:相对于父视图左侧的位置
t | int:相对于父视图顶侧的位置
r | int:相对于父视图右侧的位置
b | int:相对于父视图底侧的位置

onMeasure
void onMeasure (int widthMeasureSpec, int heightMeasureSpec)

测量视图及其内容以确定测量宽度和测量高度。这种方法是通过 measure(int,int)来调用的,并且应该被子类覆盖,以提供对其内容精确和有效的测量。
约定:当重写此方法时,必须调用setMeasuredDimension(int,int)来存储该视图的测量宽度和高度。如果不这样做,将触发一个IllegalStateException,由 measure(int,int)抛出。调用超类的onMeasure(int,int)是一个有效的用法。
基本类的度量实现默认是背景的大小,除非通过MeasureSpec允许了一个更大的大小。子类应该覆盖onmeasure(int,int)以更好地测量其内容。
如果这个方法被重写,那么其子类必须承担确保测量的高度和宽度至少是视图的最小高度和宽度(getSuggestedMinimumHeight()和getSuggestedMinimumWidth())。

参数

widthMeasureSpec | int:由父类强制执行的水平空间需求,该需求由View.MeasureSpec进行编码
heightMeasureSpec | int:由父类强制执行的垂直空间需求,该需求由View.MeasureSpec进行编码

onRestoreInstanceState
void onRestoreInstanceState (Parcelable state)

Hook允许视图重新由它的内部状态声明来绘制(如果声明在此之前已经由由onSaveInstanceState()生成)。这个函数永远不会空声明调用。

参数

state | Parcelable:由onSaveInstanceState()预先返回的冻结声明。

onSaveInstanceState
void onSaveInstanceState ()

Hook允许视图生成它的内部状态的声明,之后可以用来创建具有相同状态的新实例。这个声明应该只包含非长期存在或之后不能重构的信息。例如,你不会存储将在屏幕上的当前的位置,因为视图的新实例被放置到当前视图结构时,将会被再次计算。
你可以在这里存储一些比如这样的东西: text view中的当前游标位置(但通常不是文本本身,因为它存储在内容提供程序或其他持久存储中),在当前列表视图中所选中的项目。

参数

Parcelable | 返回一个包含视图实时状态的Parcelable对象,如果没有有意义的内容,则返回null

verifyDrawable
boolean verifyDrawable (Drawable who)

如果视图子类正在显示它自己的Drawable对象,它应该重写这个函数,并返回true,以显示它所显示的任何Drawable。

参数

p | ViewGroup.LayoutParams:将被转换为适合该视图组的布局参数的布局参数。这允许为那些可绘制的内容安排动画。
注意:当重写这个函数时,一定要调用超级类。

参数

who | Drawable:待验证的Drawable,如果它是正在显示的,则返回true,否则返回到对其超类的调用结果。

返回

boolean | true:如果它是正在显示的;false:不允许对其进行动画操作或其他

发表评论

电子邮件地址不会被公开。 必填项已用*标注