Is it possible to override Android's LayoutAnimationController
in such a way that only certain child View
s that I specify inside a ViewGroup
will animate? My goal is to choose an arbitrary set of the child views based on the current state of the Activity
and animate them with the same animation at exactly the same time, then at a later time choose a different arbitrary set of child views and do the same thing. I would like to be able to do this continually until the Activity
is finished running.
So far I have looked at and dismissed a couple of options:
startAnimation(Animation)
the specific child views
individually, however there is not a guarantee that they will all
start and end at exactly the same time, especially if the number of
views in the arbitrary set is large.LayoutAnimationController.getAnimationForView()
seemed
like it would be the easiest way, but the method is final and cannot
be overridden.I have been scratching my head for some time on this and figured I would give Stack Overflow a shot.
I wasn't able to find a way to change Android's LayoutAnimationController
, but did come up with a simple solution that does what I want. I created a View
subclass that can selectively ignore calls to run an animation if I so choose.
public class AnimationAverseView extends View {
private boolean mIsAnimatable = true;
public void setAnimatible(boolean isAnimatable) {
if (!isAnimatable) {
clearAnimation();
}
mIsAnimatable = isAnimatable;
}
@Override
public void startAnimation(Animation animation) {
if (mIsAnimatable) {
super.startAnimation(animation);
}
}
}
I did not worry about any other possible animation-related methods, since I only animate the View
s via a LayoutAnimationController
.