I have an ImageView
that sits in a page of a ViewPager
and suppose I'd like to animate it to scale down + fly somewhere off-screen, while the original view is still present in pager, untouched.
What is the best way to create this type of animation on Android 4.0.3+ ? I would like to use the new animation framework, not the old one.
One way I figured is to use the activity's DecorView
: create a clone of the ImageView
there and do an animation, but I feel like this is a bit hacky - the decor view seems more like a hidden feature and an implementation detail.
Is there a better way maybe?
android.animation.AnimatorSet. This class plays a set of Animator objects in the specified order. Animations can be set up to play together, in sequence, or after a specified delay.
android:fillAfterWhen set to true, the animation transformation is applied after the animation is over. The default value is false. If fillEnabled is not set to true and the animation is not set on a View, fillAfter is assumed to be true. May be a boolean value, such as " true " or " false ".
Animate between activitiesOn Android 5.0 (API level 21) and higher, you can also create animations that transition between your activities. This is based on the same transition framework described above to animate layout changes, but it allows you to create animations between layouts in separate activities.
I think you can get around using a DecorView
by setting setClipChildren()
to false on all the parents of the ImageView
. This allows you to animate a View
from your layout even outside of its parent (and even Activity
). I mostly use a helper method to do this:
public static void setClipView(View view, boolean clip) {
if (view != null) {
ViewParent parent = view.getParent();
if(parent instanceof ViewGroup) {
ViewGroup viewGroup = (ViewGroup) view.getParent();
viewGroup.setClipChildren(clip);
setClipView(viewGroup, clip);
}
}
}
So just use this method on your ImageView
like this:
LayoutHelper.setClipView(imageView, false);
To animate the View
itself you should use the new animation API introduced with Android 3.0 (Honeycomb - API level 11).
This DevBytes video is also somewhat related to this. It deals with custom Activity
animations and they create a duplicate ImageView
to animate the transition from one Activity
to the next. That is basically the same thing what you are trying to do, just in two different Activities
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With