public abstract class Visibility
extends Transition
java.lang.Object | ||
↳ | android.transition.Transition | |
↳ | android.transition.Visibility |
Known Direct Subclasses |
此转换跟踪对开始和结束场景中目标视图的可见性的更改。 可见性不仅由setVisibility(int)
视图状态决定,而且由当前视图层次结构中是否存在视图决定。 该类旨在成为诸如Fade
等子类的实用程序,它们使用此可见性信息来确定发生可见性更改时要运行的特定动画。 子类应该实现的方法之一或两者onAppear(ViewGroup, TransitionValues, int, TransitionValues, int)
, onDisappear(ViewGroup, TransitionValues, int, TransitionValues, int)
或者onAppear(ViewGroup, View, TransitionValues, TransitionValues)
, onDisappear(ViewGroup, View, TransitionValues, TransitionValues)
。
XML attributes |
|
---|---|
android:transitionVisibilityMode |
Changes whether the transition supports appearing and/or disappearing Views. |
Inherited XML attributes |
|
---|---|
From class android.transition.Transition
|
Constants |
|
---|---|
int |
MODE_IN 在 |
int |
MODE_OUT 在 |
Inherited constants |
---|
From class android.transition.Transition
|
Public constructors |
|
---|---|
Visibility() |
|
Visibility(Context context, AttributeSet attrs) |
Inherited methods |
|
---|---|
From class android.transition.Transition
|
|
From class java.lang.Object
|
更改过渡是否支持出现和/或消失的视图。 对应于setMode(int)
。
必须是以下常量值中的一个或多个(用'|'分隔)。
Constant | Value | 描述 |
---|---|---|
mode_in |
1 | Only appearing Views will be supported. |
mode_out |
2 | Only disappearing Views will be supported. |
这对应于全局属性资源符号 transitionVisibilityMode
。
相关方法:
int MODE_IN
在setMode(int)
使用的模式使转换对出现的目标进行操作。 也许可以与MODE_OUT
结合,以将可见性更改作为目标。
常数值:1(0x00000001)
int MODE_OUT
在setMode(int)
使用的模式使转换对正在消失的目标进行操作。 也许可以与MODE_IN
结合以将可见性更改为进出。
常量值:2(0x00000002)
Visibility (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. |
int getMode ()
返回是否支持显示和/或消失视图。 返回是否支持显示和/或消失视图。 MODE_IN
和MODE_OUT
组合。
相关XML属性:
Returns | |
---|---|
int |
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 . |
boolean isTransitionRequired (TransitionValues startValues, TransitionValues newValues)
根据captureStartValues(TransitionValues)
和captureEndValues(TransitionValues)
期间捕获的值,返回过渡是否应创建Animator。 默认实现比较从getTransitionProperties()
返回的属性值,或者如果getTransitionProperties()
返回null,则返回所有属性值。 子类可以重写此方法来为转换实现提供更具体的逻辑。
Parameters | |
---|---|
startValues |
TransitionValues : the values from captureStartValues, This may be null if the View did not exist in the start state. |
newValues |
TransitionValues : the values from captureEndValues. This may be null if the View did not exist in the end state. |
Returns | |
---|---|
boolean |
boolean isVisible (TransitionValues values)
根据给定的值对象返回视图是否“可见”。 这是通过测试值对象中相同的属性来确定的,这些属性用于确定对象是否在createAnimator(ViewGroup, TransitionValues, TransitionValues)
方法中出现或消失。 例如,可以通过想要知道对象是否可见的子类来调用此方法,方法与Visibility为实际动画确定相同。
Parameters | |
---|---|
values |
TransitionValues : The TransitionValues object that holds the information by which visibility is determined. |
Returns | |
---|---|
boolean |
True if the view reference by values is visible, false otherwise. |
Animator onAppear (ViewGroup sceneRoot, View view, TransitionValues startValues, TransitionValues endValues)
此方法的默认实现将返回空Animator。 子类应该重写此方法以使目标显示所需的转换。 该方法只能从onAppear(ViewGroup, TransitionValues, int, TransitionValues, int)
。
Parameters | |
---|---|
sceneRoot |
ViewGroup : The root of the transition hierarchy |
view |
View : The View to make appear. This will be in the target scene's View hierarchy and will be VISIBLE. |
startValues |
TransitionValues : The target values in the start scene |
endValues |
TransitionValues : The target values in the end scene |
Returns | |
---|---|
Animator |
An 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. |
Animator onAppear (ViewGroup sceneRoot, TransitionValues startValues, int startVisibility, TransitionValues endValues, int endVisibility)
此方法的默认实现调用onAppear(ViewGroup, View, TransitionValues, TransitionValues)
。 子类应该覆盖此方法或onAppear(ViewGroup, View, TransitionValues, TransitionValues)
。 如果他们需要在目标出现时创建Animator。 该方法只能由Visibility类调用; 它不打算从外部类中调用。
Parameters | |
---|---|
sceneRoot |
ViewGroup : The root of the transition hierarchy |
startValues |
TransitionValues : The target values in the start scene |
startVisibility |
int : The target visibility in the start scene |
endValues |
TransitionValues : The target values in the end scene |
endVisibility |
int : The target visibility in the end scene |
Returns | |
---|---|
Animator |
An 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. |
Animator onDisappear (ViewGroup sceneRoot, View view, TransitionValues startValues, TransitionValues endValues)
此方法的默认实现将返回空Animator。 子类应该重写此方法,使目标消失与所需的转换。 该方法只能从onDisappear(ViewGroup, TransitionValues, int, TransitionValues, int)
。
Parameters | |
---|---|
sceneRoot |
ViewGroup : The root of the transition hierarchy |
view |
View : The View to make disappear. This will be in the target scene's View hierarchy or in an ViewGroupOverlay and will be VISIBLE. |
startValues |
TransitionValues : The target values in the start scene |
endValues |
TransitionValues : The target values in the end scene |
Returns | |
---|---|
Animator |
An 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. |
Animator onDisappear (ViewGroup sceneRoot, TransitionValues startValues, int startVisibility, TransitionValues endValues, int endVisibility)
如果目标消失时需要创建Animator,则子类应该重写此方法或onDisappear(ViewGroup, View, TransitionValues, TransitionValues)
。 该方法只能由Visibility类调用; 它不打算从外部类中调用。
此方法的默认实现尝试根据View层次结构中View的情况尝试查找用于调用onDisappear(ViewGroup, View, TransitionValues, TransitionValues)
的View。 例如,如果简单地将View从其父项中删除,则视图将被添加到ViewGroupOverlay
,并作为view
中的view
参数onDisappear(ViewGroup, View, TransitionValues, TransitionValues)
。 如果可见视图更改为GONE
或INVISIBLE
,则可以将其用作view
并且在动画期间可见性将更改为VISIBLE
。 但是,如果某个视图处于也正在改变其可见性的层次结构中,则情况会更加复杂。 一般来说,如果结束场景中不再处于层次结构中的视图仍然有父项(因此其父层次结构已被删除,但未从其父项中移除),则它将被单独放置以避免副作用不恰当地将其从其父母移除。 唯一的例外是,如果前面的Scene
是created from a layout resource file
,那么为了使其消失而将开始场景视图取消父母认为是安全的。
Parameters | |
---|---|
sceneRoot |
ViewGroup : The root of the transition hierarchy |
startValues |
TransitionValues : The target values in the start scene |
startVisibility |
int : The target visibility in the start scene |
endValues |
TransitionValues : The target values in the end scene |
endVisibility |
int : The target visibility in the end scene |
Returns | |
---|---|
Animator |
An 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. |
void setMode (int mode)
根据 mode
更改过渡以支持出现和/或消失的视图。
相关XML属性:
Parameters | |
---|---|
mode |
int : The behavior supported by this transition, a combination of MODE_IN and MODE_OUT . |