Some of the code in the TextChange transition assumed that the
start values for a transition were for a TextView object. This may
not be the case, and we should return early (without creating an
animator) when it is not.
Issue #10725388 Frequent Framework crashes across apps
Change-Id: I6999eb2288f107f4b93ddb5b77cd068069d831ed
It would be useful for a transition to declare not just which
targets it wants to be run on, but also which targets it wants
to avoid. For example, you may not want to animate the items of
a ListView, or some other specific target in the view hierarchy.
This change adds various exclude*() methods which make it
possible to alter a transition to automatically ignore specific
views, ids, or classes in the hierarchy.
Issue #10692794 Transitions: Need API for excluding targets
Change-Id: If38025cdbee537a545e5a4268cbbd763af4622c5
The ChangeBounds transition causes its target view parents to suppress
layout for the duration of the transition. This is done to avoid artifacts
caused by running layout while layout bounds are being animated between
different scene values.
In order to react correctly to new transition/scene information (such as
running a new transition while another is already running), the transition
system calls pause() on all running transitions to allow layout (among other
things) to work correctly, then resume() after this is finished. This works
in general, but pause/resume do not take account of child transitions that
have already played and ended. ChangeBounds, uses pause/resume to
restore normal layout and re-enable layout suppression. This means that
when resume() is called on a ChangeBounds transition that has already
ended, that transition will leave the parent in a suppressed-layout
state, basically forever. This can cause artifacts like we're seeing in
recent ActionBar changes where the account spinner is never repopulated because
layout is never allowed to run.
The fix is to note when a transition ends and noop future calls to pause/resume.
Issue #10648936 Transitions don't work with new ActionBar functionality
Change-Id: Id9d41c0352b2270d46cfd5ad4dba130767bbf303
TextChange made a bad assumption that target text views contained
String objects as their text, which is not always the case. For example,
Gmail ActionBar text views may contain SpannableString objects, which
caused a crash due to a bad cast operation.
Fix is to simply use CharSequence instead of String as the value that
is being stored and set on the text view.
Issue #10651858 TextChange transition casts CharSequence to String when not necessarily safe
Change-Id: I3f67f5d5e39201dc0fd2edcd3e4243033cf9ae08
Issue #10460684 KLP API Review: android.view.transition and android.animation
Issue #10570740 Transitions: inflate transition targets from xml
Change-Id: I7a3f6d3aece2fcafc5efd555d033f79e86635c98