public class TransitionSet extends Transition
ORDERING_TOGETHER
and
others play ORDERING_SEQUENTIAL
. For example, AutoTransition
uses a TransitionSet to sequentially play a Fade(Fade.OUT), followed by
a ChangeBounds
, followed by a Fade(Fade.OUT) transition.
A TransitionSet can be described in a resource file by using the
tag transitionSet
, along with the standard
attributes of android.R.styleable#TransitionSet
and
android.R.styleable#Transition
. Child transitions of the
TransitionSet object can be loaded by adding those child tags inside the
enclosing transitionSet
tag. For example, the following xml
describes a TransitionSet that plays a Fade and then a ChangeBounds
transition on the affected view targets:
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android" android:transitionOrdering="sequential"> <fade/> <changeBounds/> </transitionSet>
Transition.AnimationInfo, Transition.EpicenterCallback, Transition.TransitionListener, Transition.TransitionListenerAdapter
Modifier and Type | Field and Description |
---|---|
static int |
ORDERING_SEQUENTIAL
A flag used to indicate that the child transitions of this set should
play in sequence; when one child transition ends, the next child
transition begins.
|
static int |
ORDERING_TOGETHER
A flag used to indicate that the child transitions of this set
should all start at the same time.
|
MATCH_ID, MATCH_INSTANCE, MATCH_ITEM_ID, MATCH_NAME
Constructor and Description |
---|
TransitionSet()
Constructs an empty transition set.
|
TransitionSet(Context context,
AttributeSet attrs) |
Modifier and Type | Method and Description |
---|---|
TransitionSet |
addListener(Transition.TransitionListener listener)
Adds a listener to the set of listeners that are sent events through the
life of an animation, such as start, repeat, and end.
|
TransitionSet |
addTarget(Class targetType)
Adds the Class of a target view that this Transition is interested in
animating.
|
TransitionSet |
addTarget(int targetId)
Adds the id of a target view that this Transition is interested in
animating.
|
TransitionSet |
addTarget(String targetName)
Adds the transitionName of a target view that this Transition is interested in
animating.
|
TransitionSet |
addTarget(View target)
Sets the target view instances that this Transition is interested in
animating.
|
TransitionSet |
addTransition(Transition transition)
Adds child transition to this set.
|
protected void |
cancel()
This method cancels a transition that is currently running.
|
void |
captureEndValues(TransitionValues transitionValues)
Captures the values in the end scene for the properties that this
transition monitors.
|
void |
captureStartValues(TransitionValues transitionValues)
Captures the values in the start scene for the properties that this
transition monitors.
|
TransitionSet |
clone()
Creates and returns a copy of this object.
|
protected void |
createAnimators(ViewGroup sceneRoot,
android.transition.TransitionValuesMaps startValues,
android.transition.TransitionValuesMaps endValues,
ArrayList<TransitionValues> startValuesList,
ArrayList<TransitionValues> endValuesList)
This method, essentially a wrapper around all calls to createAnimator for all
possible target views, is called with the entire set of start/end
values.
|
Transition |
excludeTarget(Class type,
boolean exclude)
Whether to add the given type to the list of types to exclude from this
transition.
|
Transition |
excludeTarget(int targetId,
boolean exclude)
Whether to add the given id to the list of target ids to exclude from this
transition.
|
Transition |
excludeTarget(String targetName,
boolean exclude)
Whether to add the given transitionName to the list of target transitionNames to exclude
from this transition.
|
Transition |
excludeTarget(View target,
boolean exclude)
Whether to add the given target to the list of targets to exclude from this
transition.
|
int |
getOrdering()
Returns the ordering of this TransitionSet.
|
Transition |
getTransitionAt(int index)
Returns the child Transition at the specified position in the TransitionSet.
|
int |
getTransitionCount()
Returns the number of child transitions in the TransitionSet.
|
void |
pause(View sceneRoot)
Pauses this transition, sending out calls to
Transition.TransitionListener.onTransitionPause(Transition) to all listeners
and pausing all running animators started by this transition. |
TransitionSet |
removeListener(Transition.TransitionListener listener)
Removes a listener from the set listening to this animation.
|
TransitionSet |
removeTarget(Class target)
Removes the given target from the list of targets that this Transition
is interested in animating.
|
TransitionSet |
removeTarget(int targetId)
Removes the given targetId from the list of ids that this Transition
is interested in animating.
|
TransitionSet |
removeTarget(String target)
Removes the given targetName from the list of transitionNames that this Transition
is interested in animating.
|
TransitionSet |
removeTarget(View target)
Removes the given target from the list of targets that this Transition
is interested in animating.
|
TransitionSet |
removeTransition(Transition transition)
Removes the specified child transition from this set.
|
void |
resume(View sceneRoot)
Resumes this transition, sending out calls to
Transition.TransitionListener.onTransitionPause(Transition) to all listeners
and pausing all running animators started by this transition. |
protected void |
runAnimators()
This is called internally once all animations have been set up by the
transition hierarchy.
|
TransitionSet |
setDuration(long duration)
Setting a non-negative duration on a TransitionSet causes all of the child
transitions (current and future) to inherit this duration.
|
void |
setEpicenterCallback(Transition.EpicenterCallback epicenterCallback)
Sets the callback to use to find the epicenter of a Transition.
|
TransitionSet |
setInterpolator(TimeInterpolator interpolator)
Sets the interpolator of this transition.
|
TransitionSet |
setOrdering(int ordering)
Sets the play order of this set's child transitions.
|
void |
setPathMotion(PathMotion pathMotion)
Sets the algorithm used to calculate two-dimensional interpolation.
|
void |
setPropagation(TransitionPropagation propagation)
Sets the method for determining Animator start delays.
|
TransitionSet |
setStartDelay(long startDelay)
Sets the startDelay of this transition.
|
animate, canRemoveViews, createAnimator, end, excludeChildren, excludeChildren, excludeChildren, getDuration, getEpicenter, getEpicenterCallback, getInterpolator, getName, getNameOverrides, getPathMotion, getPropagation, getStartDelay, getTargetIds, getTargetNames, getTargets, getTargetTypes, getTargetViewNames, getTransitionProperties, getTransitionValues, isTransitionRequired, setMatchOrder, setNameOverrides, start, toString
public static final int ORDERING_TOGETHER
public static final int ORDERING_SEQUENTIAL
public TransitionSet()
addTransition(Transition)
)}. By default,
child transitions will play together
.public TransitionSet(Context context, AttributeSet attrs)
public TransitionSet setOrdering(int ordering)
ordering
- ORDERING_TOGETHER
to play this set's child
transitions together, ORDERING_SEQUENTIAL
to play the child
transitions in sequence.public int getOrdering()
ORDERING_TOGETHER
.ORDERING_TOGETHER
if child transitions will play at the same
time, ORDERING_SEQUENTIAL
if they will play in sequence.setOrdering(int)
public TransitionSet addTransition(Transition transition)
ordering
property, determines the
order in which the transitions are started.
If this transitionSet has a duration
set on it, the
child transition will inherit that duration. Transitions are assumed to have
a maximum of one transitionSet parent.
transition
- A non-null child transition to be added to this set.public int getTransitionCount()
addTransition(Transition)
,
getTransitionAt(int)
public Transition getTransitionAt(int index)
index
- The position of the Transition to retrieve.addTransition(Transition)
,
getTransitionCount()
public TransitionSet setDuration(long duration)
setDuration
in class Transition
duration
- The length of the animation, in milliseconds.public TransitionSet setStartDelay(long startDelay)
Transition
setStartDelay
in class Transition
startDelay
- The length of the delay, in milliseconds.public TransitionSet setInterpolator(TimeInterpolator interpolator)
Transition
setInterpolator
in class Transition
interpolator
- The time interpolator used by the transitionpublic TransitionSet addTarget(View target)
Transition
The target list is like the targetId
list except this list specifies the actual View instances, not the ids
of the views. This is an important distinction when scene changes involve
view hierarchies which have been inflated separately; different views may
share the same id but not actually be the same instance. If the transition
should treat those views as the same, then Transition.addTarget(int)
should be used
instead of Transition.addTarget(View)
. If, on the other hand, scene changes involve
changes all within the same view hierarchy, among views which do not
necessarily have ids set on them, then the target list of views may be more
convenient.
addTarget
in class Transition
target
- A View on which the Transition will act, must be non-null.transitionSet.addTransitions(new Fade()).addTarget(someView);
Transition.addTarget(int)
public TransitionSet addTarget(int targetId)
Transition
Note that using ids to specify targets implies that ids should be unique within the view hierarchy underneath the scene root.
addTarget
in class Transition
targetId
- The id of a target view, must be a positive number.transitionSet.addTransitions(new Fade()).addTarget(someId);
View.getId()
public TransitionSet addTarget(String targetName)
Transition
Note that transitionNames should be unique within the view hierarchy.
addTarget
in class Transition
targetName
- The transitionName of a target view, must be non-null.transitionSet.addTransitions(new Fade()).addTarget(someName);
View.getTransitionName()
public TransitionSet addTarget(Class targetType)
Transition
Note that any View that can be cast to targetType will be included, so
if targetType is View.class
, all Views will be included.
addTarget
in class Transition
targetType
- The type to include when running this transition.transitionSet.addTransitions(new Fade()).addTarget(ImageView.class);
Transition.addTarget(int)
,
Transition.addTarget(android.view.View)
,
Transition.excludeTarget(Class, boolean)
,
Transition.excludeChildren(Class, boolean)
public TransitionSet addListener(Transition.TransitionListener listener)
Transition
addListener
in class Transition
listener
- the listener to be added to the current set of listeners
for this animation.public TransitionSet removeTarget(int targetId)
Transition
removeTarget
in class Transition
targetId
- The id of a target view, must be a positive number.transitionSet.addTransitions(new Fade()).removeTargetId(someId);
public TransitionSet removeTarget(View target)
Transition
removeTarget
in class Transition
target
- The target view, must be non-null.transitionSet.addTransitions(new Fade()).removeTarget(someView);
public TransitionSet removeTarget(Class target)
Transition
removeTarget
in class Transition
target
- The type of the target view, must be non-null.transitionSet.addTransitions(new Fade()).removeTarget(someType);
public TransitionSet removeTarget(String target)
Transition
removeTarget
in class Transition
target
- The transitionName of a target view, must not be null.transitionSet.addTransitions(new Fade()).removeTargetName(someName);
public Transition excludeTarget(View target, boolean exclude)
Transition
exclude
parameter specifies whether the target
should be added to or removed from the excluded list.
Excluding targets is a general mechanism for allowing transitions to run on
a view hierarchy while skipping target views that should not be part of
the transition. For example, you may want to avoid animating children
of a specific ListView or Spinner. Views can be excluded either by their
id, or by their instance reference, or by the Class of that view
(eg, Spinner
).
excludeTarget
in class Transition
target
- The target to ignore when running this transition.exclude
- Whether to add the target to or remove the target from the
current list of excluded targets.Transition.excludeChildren(View, boolean)
,
Transition.excludeTarget(int, boolean)
,
Transition.excludeTarget(Class, boolean)
public Transition excludeTarget(String targetName, boolean exclude)
Transition
exclude
parameter specifies whether the target
should be added to or removed from the excluded list.
Excluding targets is a general mechanism for allowing transitions to run on
a view hierarchy while skipping target views that should not be part of
the transition. For example, you may want to avoid animating children
of a specific ListView or Spinner. Views can be excluded by their
id, their instance reference, their transitionName, or by the Class of that view
(eg, Spinner
).
excludeTarget
in class Transition
targetName
- The name of a target to ignore when running this transition.exclude
- Whether to add the target to or remove the target from the
current list of excluded targets.Transition.excludeTarget(View, boolean)
,
Transition.excludeTarget(int, boolean)
,
Transition.excludeTarget(Class, boolean)
public Transition excludeTarget(int targetId, boolean exclude)
Transition
exclude
parameter specifies whether the target
should be added to or removed from the excluded list.
Excluding targets is a general mechanism for allowing transitions to run on
a view hierarchy while skipping target views that should not be part of
the transition. For example, you may want to avoid animating children
of a specific ListView or Spinner. Views can be excluded either by their
id, or by their instance reference, or by the Class of that view
(eg, Spinner
).
excludeTarget
in class Transition
targetId
- The id of a target to ignore when running this transition.exclude
- Whether to add the target to or remove the target from the
current list of excluded targets.Transition.excludeChildren(int, boolean)
,
Transition.excludeTarget(View, boolean)
,
Transition.excludeTarget(Class, boolean)
public Transition excludeTarget(Class type, boolean exclude)
Transition
exclude
parameter specifies whether the target
type should be added to or removed from the excluded list.
Excluding targets is a general mechanism for allowing transitions to run on
a view hierarchy while skipping target views that should not be part of
the transition. For example, you may want to avoid animating children
of a specific ListView or Spinner. Views can be excluded either by their
id, or by their instance reference, or by the Class of that view
(eg, Spinner
).
excludeTarget
in class Transition
type
- The type to ignore when running this transition.exclude
- Whether to add the target type to or remove it from the
current list of excluded target types.Transition.excludeChildren(Class, boolean)
,
Transition.excludeTarget(int, boolean)
,
Transition.excludeTarget(View, boolean)
public TransitionSet removeListener(Transition.TransitionListener listener)
Transition
removeListener
in class Transition
listener
- the listener to be removed from the current set of
listeners for this transition.public void setPathMotion(PathMotion pathMotion)
Transition
Transitions such as ChangeBounds
move Views, typically
in a straight path between the start and end positions. Applications that desire to
have these motions move in a curve can change how Views interpolate in two dimensions
by extending PathMotion and implementing
PathMotion.getPath(float, float, float, float)
.
When describing in XML, use a nested XML tag for the path motion. It can be one of
the built-in tags arcMotion
or patternPathMotion
or it can
be a custom PathMotion using pathMotion
with the class
attributed with the fully-described class name. For example:
<changeBounds>
<pathMotion class="my.app.transition.MyPathMotion"/>
</changeBounds>
or
<changeBounds>
<arcMotion android:minimumHorizontalAngle="15"
android:minimumVerticalAngle="0" android:maximumAngle="90"/>
</changeBounds>
setPathMotion
in class Transition
pathMotion
- Algorithm object to use for determining how to interpolate in two
dimensions. If null, a straight-path algorithm will be used.ArcMotion
,
PatternPathMotion
,
PathMotion
public TransitionSet removeTransition(Transition transition)
transition
- The transition to be removed.protected void createAnimators(ViewGroup sceneRoot, android.transition.TransitionValuesMaps startValues, android.transition.TransitionValuesMaps endValues, ArrayList<TransitionValues> startValuesList, ArrayList<TransitionValues> endValuesList)
Transition
Transition.createAnimator(ViewGroup, TransitionValues, TransitionValues)
with each set of start/end values on this transition. The
TransitionSet subclass overrides this method and delegates it to
each of its children in succession.createAnimators
in class Transition
protected void runAnimators()
Transition
runAnimators
in class Transition
public void captureStartValues(TransitionValues transitionValues)
Transition
Transition.createAnimator(ViewGroup, TransitionValues, TransitionValues)
.
The main concern for an implementation is what the
properties are that the transition cares about and what the values are
for all of those properties. The start and end values will be compared
later during the
Transition.createAnimator(android.view.ViewGroup, TransitionValues, TransitionValues)
method to determine what, if any, animations, should be run.
Subclasses must implement this method. The method should only be called by the transition system; it is not intended to be called from external classes.
captureStartValues
in class Transition
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.Transition.captureEndValues(TransitionValues)
,
Transition.createAnimator(ViewGroup, TransitionValues, TransitionValues)
public void captureEndValues(TransitionValues transitionValues)
Transition
Transition.createAnimator(ViewGroup, TransitionValues, TransitionValues)
.
The main concern for an implementation is what the
properties are that the transition cares about and what the values are
for all of those properties. The start and end values will be compared
later during the
Transition.createAnimator(android.view.ViewGroup, TransitionValues, TransitionValues)
method to determine what, if any, animations, should be run.
Subclasses must implement this method. The method should only be called by the transition system; it is not intended to be called from external classes.
captureEndValues
in class Transition
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.Transition.captureStartValues(TransitionValues)
,
Transition.createAnimator(ViewGroup, TransitionValues, TransitionValues)
public void pause(View sceneRoot)
Transition
Transition.TransitionListener.onTransitionPause(Transition)
to all listeners
and pausing all running animators started by this transition.pause
in class Transition
public void resume(View sceneRoot)
Transition
Transition.TransitionListener.onTransitionPause(Transition)
to all listeners
and pausing all running animators started by this transition.resume
in class Transition
protected void cancel()
Transition
cancel
in class Transition
public void setPropagation(TransitionPropagation propagation)
Transition
Explode
or
Slide
, there may be a desire to have a "wave-front" effect
such that the Animator start delay depends on position of the View. The
TransitionPropagation specifies how the start delays are calculated.setPropagation
in class Transition
propagation
- The class used to determine the start delay of
Animators created by this Transition. A null value
indicates that no delay should be used.public void setEpicenterCallback(Transition.EpicenterCallback epicenterCallback)
Transition
Explode
use a point or Rect to orient
the direction of travel. This is called the epicenter of the Transition and is
typically centered on a touched View. The
Transition.EpicenterCallback
allows a Transition to
dynamically retrieve the epicenter during a Transition.setEpicenterCallback
in class Transition
epicenterCallback
- The callback to use to find the epicenter of the Transition.public TransitionSet clone()
Object
x
, the expression:
will be true, and that the expression:x.clone() != x
will bex.clone().getClass() == x.getClass()
true
, but these are not absolute requirements.
While it is typically the case that:
will bex.clone().equals(x)
true
, this is not an absolute requirement.
By convention, the returned object should be obtained by calling
super.clone
. If a class and all of its superclasses (except
Object
) obey this convention, it will be the case that
x.clone().getClass() == x.getClass()
.
By convention, the object returned by this method should be independent
of this object (which is being cloned). To achieve this independence,
it may be necessary to modify one or more fields of the object returned
by super.clone
before returning it. Typically, this means
copying any mutable objects that comprise the internal "deep structure"
of the object being cloned and replacing the references to these
objects with references to the copies. If a class contains only
primitive fields or references to immutable objects, then it is usually
the case that no fields in the object returned by super.clone
need to be modified.
The method clone
for class Object
performs a
specific cloning operation. First, if the class of this object does
not implement the interface Cloneable
, then a
CloneNotSupportedException
is thrown. Note that all arrays
are considered to implement the interface Cloneable
and that
the return type of the clone
method of an array type T[]
is T[]
where T is any reference or primitive type.
Otherwise, this method creates a new instance of the class of this
object and initializes all its fields with exactly the contents of
the corresponding fields of this object, as if by assignment; the
contents of the fields are not themselves cloned. Thus, this method
performs a "shallow copy" of this object, not a "deep copy" operation.
The class Object
does not itself implement the interface
Cloneable
, so calling the clone
method on an object
whose class is Object
will result in throwing an
exception at run time.
clone
in class Transition
Cloneable