public class LayoutAnimationController
extends Object
java.lang.Object | |
↳ | android.view.animation.LayoutAnimationController |
Known Direct Subclasses |
布局动画控制器用于为布局或视图组的子项设置动画。 每个孩子使用相同的动画,但对于其中的每一个人来说,动画都是在不同的时间开始的。 ViewGroup
使用布局动画控制器来计算每个孩子的动画开始必须抵消的延迟。 延迟是通过使用每个孩子的特征来计算的,例如视图组中的索引。 此标准实现通过将固定数量的毫秒乘以其父视图组中的子索引来计算延迟。 子类应该覆盖getDelayForView(android.view.View)
来实现计算延迟的不同方式。 例如, GridLayoutAnimationController
将根据子视图组中父子视图的列和行索引计算延迟。 用于计算每个孩子的动画延迟的信息存储在LayoutAnimationController.AnimationParameters
的实例中,该实例本身存储在视图的ViewGroup.LayoutParams
中。
Nested classes |
|
---|---|
class |
LayoutAnimationController.AnimationParameters 必须附加到布局动画控制器动画的视图组中包含的每个视图的一组参数。 |
XML attributes |
|
---|---|
android:animation |
Animation to use on each child. |
android:animationOrder |
The order in which the animations will be started. |
android:delay |
Fraction of the animation duration used to delay the beginning of the animation of each child. |
android:interpolator |
Interpolator used to interpolate the delay between the start of each animation. |
Constants |
|
---|---|
int |
ORDER_NORMAL 按照视图添加到视图组的顺序分配动画延迟。 |
int |
ORDER_RANDOM 随机分发动画延迟。 |
int |
ORDER_REVERSE 按照将视图添加到视图组的相反顺序分配动画延迟。 |
Fields |
|
---|---|
protected Animation |
mAnimation 将动画应用于设置了此布局动画控制器的视图组的每个子项。 |
protected Interpolator |
mInterpolator 内插器用于内插延迟。 |
protected Random |
mRandomizer 订单设置为随机时使用的随机数发生器。 |
Public constructors |
|
---|---|
LayoutAnimationController(Context context, AttributeSet attrs) 从外部资源创建一个新的布局动画控制器。 |
|
LayoutAnimationController(Animation animation) 以50%的延迟和指定的动画创建新的布局动画控制器。 |
|
LayoutAnimationController(Animation animation, float delay) 用指定的延迟和指定的动画创建一个新的布局动画控制器。 |
Public methods |
|
---|---|
Animation |
getAnimation() 返回应用于设置此控制器的视图组的每个子项的动画。 |
final Animation |
getAnimationForView(View view) 返回要应用于指定视图的动画。 |
float |
getDelay() 返回儿童动画被抵消的延迟。 |
Interpolator |
getInterpolator() 返回用于内插子节点之间延迟的插补器。 |
int |
getOrder() 返回用于计算每个孩子动画延迟的顺序。 |
boolean |
isDone() 指示布局动画是否已结束。 |
void |
setAnimation(Animation animation) 设置要在该布局动画控制器所在的视图组的每个子节点上运行的动画。 |
void |
setAnimation(Context context, int resourceID) 设置要在该布局动画控制器所在的视图组的每个子节点上运行的动画。 |
void |
setDelay(float delay) 将延迟设置为动画持续时间的一部分,通过该延迟来补偿儿童动画。 |
void |
setInterpolator(Context context, int resourceID) 设置用于内插子项之间延迟的插补器。 |
void |
setInterpolator(Interpolator interpolator) 设置用于内插子项之间延迟的插补器。 |
void |
setOrder(int order) 设置用于计算每个孩子动画延迟的顺序。 |
void |
start() 开始动画。 |
boolean |
willOverlap() 指示两个儿童的动画是否会重叠。 |
Protected methods |
|
---|---|
long |
getDelayForView(View view) 返回指定视图的动画必须延迟或偏移的毫秒数。 |
int |
getTransformedIndex(LayoutAnimationController.AnimationParameters params) 转换存储在索引 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
用于每个孩子的动画。
必须是另一个资源的引用,其形式为“ @[+][package:]type:name
”,或者其形式为“一个主题属性 ?[package:][type:]name
”。
这对应于全局属性资源符号 animation
。
相关方法:
动画的开始顺序。
必须是下列常数值之一。
Constant | Value | 描述 |
---|---|---|
normal |
0 | Animations are started in the natural order. |
reverse |
1 | Animations are started in the reverse order. |
random |
2 | Animations are started randomly. |
这对应于全局属性资源符号 animationOrder
。
相关方法:
用于延迟每个孩子动画开始的动画持续时间的分数。
可能是浮点值,如“ 1.2
”。
可能是一个小数值,这是一个浮点数, 14.5%
%或%p,例如“ 14.5%
”。 %后缀始终表示基本大小的百分比; 可选的%p后缀提供了相对于某个父容器的大小。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 delay
。
插值器用于内插每个动画开始之间的延迟。
必须是另一个资源的引用,其形式为“ @[+][package:]type:name
”,或者其形式为“一个主题属性 ?[package:][type:]name
”。
这对应于全局属性资源符号 interpolator
。
相关方法:
LayoutAnimationController (Context context, AttributeSet attrs)
从外部资源创建一个新的布局动画控制器。
Parameters | |
---|---|
context |
Context : the Context the view group is running in, through which it can access the resources |
attrs |
AttributeSet : the attributes of the XML tag that is inflating the layout animation controller |
LayoutAnimationController (Animation animation)
以50%的延迟和指定的动画创建新的布局动画控制器。
Parameters | |
---|---|
animation |
Animation : the animation to use on each child of the view group |
LayoutAnimationController (Animation animation, float delay)
用指定的延迟和指定的动画创建一个新的布局动画控制器。
Parameters | |
---|---|
animation |
Animation : the animation to use on each child of the view group |
delay |
float : the delay by which each child's animation must be offset |
Animation getAnimation ()
返回应用于设置此控制器的视图组的每个子项的动画。
Returns | |
---|---|
Animation |
an Animation instance |
Animation getAnimationForView (View view)
返回要应用于指定视图的动画。 返回的动画会根据LayoutAnimationController.AnimationParameters
提供的信息计算偏移量。 此方法由视图组调用以获取要在特定子级上设置的动画。
Parameters | |
---|---|
view |
View : the view to animate |
Returns | |
---|---|
Animation |
an animation delayed by the number of milliseconds returned by getDelayForView(android.view.View) |
float getDelay ()
返回儿童动画被抵消的延迟。 延迟表示为动画持续时间的一小部分。
Returns | |
---|---|
float |
a fraction of the animation duration |
也可以看看:
Interpolator getInterpolator ()
返回用于内插子节点之间延迟的插补器。
Returns | |
---|---|
Interpolator |
an Interpolator |
int getOrder ()
返回用于计算每个孩子动画延迟的顺序。
相关XML属性:
Returns | |
---|---|
int |
one of ORDER_NORMAL , ORDER_REVERSE or {@link #ORDER_RANDOM) |
boolean isDone ()
指示布局动画是否已结束。 当延迟时间最长的动画完成时,认为布局动画已完成。
Returns | |
---|---|
boolean |
true if all of the children's animations are over, false otherwise |
void setAnimation (Animation animation)
设置要在该布局动画控制器所在的视图组的每个子节点上运行的动画。
相关XML属性:
Parameters | |
---|---|
animation |
Animation : the animation to run on each child of the view group |
void setAnimation (Context context, int resourceID)
设置要在该布局动画控制器所在的视图组的每个子节点上运行的动画。
相关XML属性:
Parameters | |
---|---|
context |
Context : the context from which the animation must be inflated |
resourceID |
int : the resource identifier of the animation |
void setDelay (float delay)
将延迟设置为动画持续时间的一部分,通过该延迟来补偿儿童动画。 一般公式是:
child animation delay = child index * delay * animation duration
Parameters | |
---|---|
delay |
float : a fraction of the animation duration |
也可以看看:
void setInterpolator (Context context, int resourceID)
设置用于内插子项之间延迟的插补器。
相关XML属性:
Parameters | |
---|---|
context |
Context : the context from which the interpolator must be inflated |
resourceID |
int : the resource identifier of the interpolator |
void setInterpolator (Interpolator interpolator)
设置用于内插子项之间延迟的插补器。
相关XML属性:
Parameters | |
---|---|
interpolator |
Interpolator : the interpolator |
void setOrder (int order)
设置用于计算每个孩子动画延迟的顺序。
相关XML属性:
Parameters | |
---|---|
order |
int : one of ORDER_NORMAL , ORDER_REVERSE or ORDER_RANDOM |
boolean willOverlap ()
指示两个儿童的动画是否会重叠。 当延迟低于100%(或1.0)时,动画重叠。
Returns | |
---|---|
boolean |
true if animations will overlap, false otherwise |
long getDelayForView (View view)
返回指定视图的动画必须延迟或偏移的毫秒数。 子类应该重写此方法以返回合适的值。 该实现返回child animation delay
毫秒,其中:
child animation delay = child index * delayThe index is retrieved from the
LayoutAnimationController.AnimationParameters
found in the view's
ViewGroup.LayoutParams
.
Parameters | |
---|---|
view |
View : the view for which to obtain the animation's delay |
Returns | |
---|---|
long |
a delay in milliseconds |
int getTransformedIndex (LayoutAnimationController.AnimationParameters params)
转换存储在索引LayoutAnimationController.AnimationParameters
通过返回的顺序getOrder()
。 子类应该重写此方法,以便为其他类型的排序提供额外的支持。 在任何计算之前,应该由getDelayForView(android.view.View)
调用此方法。
Parameters | |
---|---|
params |
LayoutAnimationController.AnimationParameters : the animation parameters containing the index |
Returns | |
---|---|
int |
a transformed index |