public class ChangeTransform
extends Transition
java.lang.Object | ||
↳ | android.transition.Transition | |
↳ | android.transition.ChangeTransform |
此过渡在场景更改之前和之后捕获视图的缩放和旋转,并在过渡期间为这些更改制作动画。 通过在场景变化之前和之后捕捉父变换并在变换过程中为动画变换处理父变换。
XML attributes |
|
---|---|
android:reparent |
Tells ChangeTransform to track parent changes. |
android:reparentWithOverlay |
A parent change should use an overlay or affect the transform of the transitionining View. |
Inherited XML attributes |
|
---|---|
From class android.transition.Transition
|
Inherited constants |
---|
From class android.transition.Transition
|
Public constructors |
|
---|---|
ChangeTransform() |
|
ChangeTransform(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 |
getReparent() 返回ChangeTransform是否跟踪父更改。 |
boolean |
getReparentWithOverlay() 返回父级更改是否应使用叠加。 |
String[] |
getTransitionProperties() 返回存储在 |
void |
setReparent(boolean reparent) 设置ChangeTransform是否跟踪父更改。 |
void |
setReparentWithOverlay(boolean reparentWithOverlay) 设置对父级的更改是否应使用叠加层。 |
Inherited methods |
|
---|---|
From class android.transition.Transition
|
|
From class java.lang.Object
|
告诉ChangeTransform跟踪父变化。 默认值是true。 对应于setReparent(boolean)
。
必须是布尔值,可以是“ true
”或“ false
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 reparent
。
相关方法:
父级更改应使用叠加或影响过渡视图的变换。 默认值是true。 对应于setReparentWithOverlay(boolean)
。
必须是布尔值,可以是“ true
”或“ false
”。
这也可能是对包含此类型值的资源(形式为“ @[package:]type:name
”)或主题属性(形式为“ ?[package:][type:]name
”)的 ?[package:][type:]name
。
这对应于全局属性资源符号 reparentWithOverlay
。
相关方法:
ChangeTransform (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)
捕获此转场监视的属性在开始场景中的值。 然后这些值作为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 getReparent ()
返回ChangeTransform是否跟踪父更改。 如果父母更改被跟踪,则转换将适应不同父母的转换。 如果它们未被跟踪,则仅跟踪转换视图的转换。 默认值是true。
相关XML属性:
Returns | |
---|---|
boolean |
whether parent changes will be tracked by the ChangeTransform. |
boolean getReparentWithOverlay ()
返回父级更改是否应使用叠加。 当父变更未使用叠加层时,会影响子项的变换。 默认值是true
。
注意:当父级更改时不使用叠加级别时,可以在视图移到其父级边界之外时裁剪视图。 设置setClipChildren(boolean)
和setClipToPadding(boolean)
可以提供帮助。 另外,当覆盖层没有被使用,并且父层为其位置设置动画时,子视图的位置将与其父层的最终位置相关,所以它可能在开始时显示为“跳跃”。
相关XML属性:
Returns | |
---|---|
boolean |
true when a changed parent should execute the transition inside the scene root's overlay or false if a parent change only affects the transform of the transitioning view. |
String[] getTransitionProperties ()
返回TransitionValues
对象中存储的属性名称集合,该对象传递给captureStartValues(TransitionValues)
,该过渡过程关心的是取消重叠动画。 当在给定场景根上开始任何转场时,将检查当前在同一场景根上运行的所有转场,以查看它们基于其动画的属性是否与新转场中相同属性的最终值一致。 如果最终值不相等,则旧的动画将被取消,因为新的转换将为这些新值开始新的动画。 如果值相等,则允许旧动画继续,并且不会为该转换启动新的动画。
A transition does not need to override this method. However, not doing so will mean that the cancellation logic outlined in the previous paragraph will be skipped for that transition, possibly leading to artifacts as old transitions and new transitions on the same targets run in parallel, animating views toward potentially different end values.
Returns | |
---|---|
String[] |
An array of property names as described in the class documentation for TransitionValues . The default implementation returns null . |
void setReparent (boolean reparent)
设置ChangeTransform是否跟踪父更改。 如果父母更改被跟踪,则转换将适应不同父母的转换。 如果它们未被跟踪,则仅跟踪转换视图的转换。 默认值是true。
相关XML属性:
Parameters | |
---|---|
reparent |
boolean : Set to true to track parent changes or false to only track changes of the transitioning view without considering the parent change. |
void setReparentWithOverlay (boolean reparentWithOverlay)
设置对父级的更改是否应使用叠加层。 当父变更未使用叠加层时,会影响子项的变换。 默认值是true
。
注意:当父级更改时不使用叠加级别时,可以在视图移到其父级边界之外时裁剪视图。 设置setClipChildren(boolean)
和setClipToPadding(boolean)
可以提供帮助。 另外,当覆盖层没有被使用,并且父层为其位置设置动画时,子视图的位置将与其父层的最终位置相关,所以它可能在开始时显示为“跳跃”。
相关XML属性:
Parameters | |
---|---|
reparentWithOverlay |
boolean
|
Returns | |
---|---|
void |
true when a changed parent should execute the transition inside the scene root's overlay or false if a parent change only affects the transform of the transitioning view. |