public class ChangeBounds
extends Transition
java.lang.Object | ||
↳ | android.transition.Transition | |
↳ | android.transition.ChangeBounds |
此转换捕获场景更改前后目标视图的布局边界,并在转换期间为这些更改提供动画。
甲ChangeBounds过渡可以在资源文件中,通过使用标签来描述 changeBounds
,使用它的属性 ChangeBounds
与的其它标准属性一起 Transition
。
XML attributes |
|
---|---|
android:resizeClip |
Resize the view by adjusting the clipBounds rather than changing the dimensions of the view itself. |
Inherited XML attributes |
|
---|---|
From class android.transition.Transition
|
Inherited constants |
---|
From class android.transition.Transition
|
Public constructors |
|
---|---|
ChangeBounds() |
|
ChangeBounds(Context context, AttributeSet attrs) |
Public methods |
|
---|---|
void |
captureEndValues(TransitionValues transitionValues) 在结束场景中捕获此转换监视的属性的值。 |
void |
captureStartValues(TransitionValues transitionValues) 捕获此转场监视的属性在开始场景中的值。 |
Animator |
createAnimator(ViewGroup sceneRoot, TransitionValues startValues, TransitionValues endValues) 此方法创建一个动画,该动画将为此转换运行,因为前面为start和end场景捕获的startValues和endValues结构中的信息。 |
boolean |
getResizeClip() 当ChangeBounds将通过在视图动画期间更改剪辑边界来调整大小时返回true,或者当边界被更改时为false。 |
String[] |
getTransitionProperties() 返回存储在传递到 |
void |
setReparent(boolean reparent) 此方法在API级别21中已弃用。使用 |
void |
setResizeClip(boolean resizeClip) 当 |
Inherited methods |
|
---|---|
From class android.transition.Transition
|
|
From class java.lang.Object
|
通过调整clipBounds而不是更改视图本身的尺寸来调整视图的大小。 默认值是false。
必须是布尔值,可以是“ true
”或“ false
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 resizeClip
。
相关方法:
ChangeBounds (Context context, AttributeSet attrs)
Parameters | |
---|---|
context |
Context
|
attrs |
AttributeSet
|
void captureEndValues (TransitionValues transitionValues)
在结束场景中捕获此转换监视的属性的值。 这些值随后将作为endValues结构传递给createAnimator(ViewGroup, TransitionValues, TransitionValues)
。 实施的主要关注点是过渡期关注的属性以及所有这些属性的价值。 开始和结束值将在createAnimator(android.view.ViewGroup, TransitionValues, TransitionValues)
方法后期进行比较,以确定应该运行哪些动画(如果有的话)。
子类必须实现此方法。 该方法只能由过渡系统调用; 它不打算从外部类中调用。
Parameters | |
---|---|
transitionValues |
TransitionValues : The holder for any values that the Transition wishes to store. Values are stored in the values field of this TransitionValues object and are keyed from a String value. For example, to store a view's rotation value, a transition might call transitionValues.values.put("appname:transitionname:rotation", view.getRotation()) . The target view will already be stored in the transitionValues structure when this method is called. |
void captureStartValues (TransitionValues transitionValues)
捕获此转场监视的属性在开始场景中的值。 这些值然后在以后调用createAnimator(ViewGroup, TransitionValues, TransitionValues)
作为startValues结构createAnimator(ViewGroup, TransitionValues, TransitionValues)
。 实施的主要关注点是过渡期关注的属性以及所有这些属性的价值。 开始和结束值将在createAnimator(android.view.ViewGroup, TransitionValues, TransitionValues)
方法后期进行比较,以确定应该运行哪些动画(如果有的话)。
子类必须实现此方法。 该方法只能由过渡系统调用; 它不打算从外部类中调用。
Parameters | |
---|---|
transitionValues |
TransitionValues : The holder for any values that the Transition wishes to store. Values are stored in the values field of this TransitionValues object and are keyed from a String value. For example, to store a view's rotation value, a transition might call transitionValues.values.put("appname:transitionname:rotation", view.getRotation()) . The target view will already be stored in the transitionValues structure when this method is called. |
Animator createAnimator (ViewGroup sceneRoot, TransitionValues startValues, TransitionValues endValues)
此方法创建一个动画,该动画将为此转换运行,因为前面为start和end场景捕获的startValues和endValues结构中的信息。 Transition的子类应该覆盖此方法。 该方法只能由过渡系统调用; 它不打算从外部类中调用。
该方法由transition的父级(一直到层次结构中最高级的Transition)调用,并使用sceneRoot和start / end值进行调用,以便转换可能需要设置初始目标值并构建适当的动画。 例如,如果总体Transition是一个由多个子级转换组成的TransitionSet
,那么一些子级转换可能希望在整个Transition转换开始之前在目标视图上设置初始值,以使它们处于延迟的适当状态在开始和孩子之间的过渡开始时间。 例如,淡入一个项目的转换可能希望将开始的alpha值设置为0,以避免在实际开始动画之前的转换之前其闪烁。 这是必要的,因为触发Transition的场景变化将自动设置所有目标视图上的结束场景,因此想要从不同值开始动画的Transition应该在从此方法返回之前设置该值。
另外,Transition可以执行逻辑来确定是否需要在给定目标上运行转换以及开始/结束值。 例如,调整屏幕上对象大小的过渡可能希望避免在开始场景或结束场景中不存在的视图运行。
如果有一个动画创建并从这个方法返回,转换机制会将任何适用的持续时间,startDelay和插补器应用到该动画并启动它。 返回值null
表示不应该运行动画。 默认实现返回null。
该方法针对每个可应用的目标对象进行调用,该对象存储在 view
字段中。
Parameters | |
---|---|
sceneRoot |
ViewGroup : The root of the transition hierarchy. |
startValues |
TransitionValues : The values for a specific target in the start scene. |
endValues |
TransitionValues : The values for the target in the end scene. |
Returns | |
---|---|
Animator |
A Animator to be started at the appropriate time in the overall transition for this scene change. A null value means no animation should be run. |
boolean getResizeClip ()
当ChangeBounds将通过在视图动画期间更改剪辑边界来调整大小时返回true,或者当边界被更改时为false。 默认值是false。
相关XML属性:
Returns | |
---|---|
boolean |
true when the ChangeBounds will resize by changing the clip bounds during the view animation or false when bounds are changed. The default value is false. |
String[] getTransitionProperties ()
返回存储在TransitionValues
对象中的属性名称集合,该对象传递给captureStartValues(TransitionValues)
,此转换关心用于取消重叠动画的目的。 当在给定场景根上开始任何转场时,将检查当前在同一场景根上运行的所有转场,以查看它们基于其动画的属性是否与新转场中相同属性的最终值一致。 如果最终值不相等,则旧的动画将被取消,因为新的转换将为这些新值开始新的动画。 如果值相等,则允许旧动画继续,并且不会为该转换启动新的动画。
过渡不需要重写此方法。 但是,如果不这样做,则意味着上一段中所述的取消逻辑将跳过该转换,可能会导致人为因素,因为旧转换和同一目标上的新转换并行运行,将视图动画化为可能不同的最终值。
Returns | |
---|---|
String[] |
An array of property names as described in the class documentation for TransitionValues . The default implementation returns null . |
void setReparent (boolean reparent)
此方法在API级别21中已弃用。
使用ChangeTransform
来处理不同父母之间的转换。
设置此标志告诉ChangeBounds使用此转换跟踪每个视图的父/母之前/之后。 该标志默认情况下未启用,因为它要求两个场景中的父实例相同,否则所有父母都必须使用ID来允许转换来确定哪些父母相同。
Parameters | |
---|---|
reparent |
boolean : true if the transition should track the parent container of target views and animate parent changes. |
void setResizeClip (boolean resizeClip)
当resizeClip
为true时,ChangeBounds将使用clipBounds调整视图大小,而不是在动画过程中更改视图的大小。 当resizeClip
为false时,ChangeBounds通过更改其尺寸来调整视图大小。
当resizeClip设置为true时,剪辑边界由ChangeBounds修改。 因此,在此模式下, ChangeClipBounds
与ChangeBounds不兼容。
相关XML属性:
Parameters | |
---|---|
resizeClip |
boolean : Used to indicate whether the view bounds should be modified or the clip bounds should be modified by ChangeBounds. |