Most visited

Recently visited

Added in API level 21

ChangeTransform

public class ChangeTransform
extends Transition

java.lang.Object
   ↳ android.transition.Transition
     ↳ android.transition.ChangeTransform


此过渡在场景更改之前和之后捕获视图的缩放和旋转,并在过渡期间为这些更改制作动画。 通过在场景变化之前和之后捕捉父变换并在变换过程中为动画变换处理父变换。

Summary

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()

返回存储在 TransitionValues对象中的属性名称集合,该对象传递给 captureStartValues(TransitionValues) ,此转换关注用于取消重叠动画的目的。

void setReparent(boolean reparent)

设置ChangeTransform是否跟踪父更改。

void setReparentWithOverlay(boolean reparentWithOverlay)

设置对父级的更改是否应使用叠加层。

Inherited methods

From class android.transition.Transition
From class java.lang.Object

XML attributes

android:reparent

告诉ChangeTransform跟踪父变化。 默认值是true。 对应于setReparent(boolean)

必须是布尔值,可以是“ true ”或“ false ”。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 reparent

相关方法:

android:reparentWithOverlay

父级更改应使用叠加或影响过渡视图的变换。 默认值是true。 对应于setReparentWithOverlay(boolean)

必须是布尔值,可以是“ true ”或“ false ”。

这也可能是对包含此类型值的资源(形式为“ @[package:]type:name ”)或主题属性(形式为“ ?[package:][type:]name ”)的 ?[package:][type:]name

这对应于全局属性资源符号 reparentWithOverlay

相关方法:

Public constructors

ChangeTransform

Added in API level 21
ChangeTransform ()

ChangeTransform

Added in API level 21
ChangeTransform (Context context, 
                AttributeSet attrs)

Parameters
context Context
attrs AttributeSet

Public methods

captureEndValues

Added in API level 21
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.

captureStartValues

Added in API level 21
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.

createAnimator

Added in API level 21
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.

getReparent

Added in API level 21
boolean getReparent ()

返回ChangeTransform是否跟踪父更改。 如果父母更改被跟踪,则转换将适应不同父母的转换。 如果它们未被跟踪,则仅跟踪转换视图的转换。 默认值是true。

相关XML属性:

Returns
boolean whether parent changes will be tracked by the ChangeTransform.

getReparentWithOverlay

Added in API level 21
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.

getTransitionProperties

Added in API level 21
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.

setReparent

Added in API level 21
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.

setReparentWithOverlay

Added in API level 21
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.

Hooray!