Fixing AVD animation with startOffset

b/17160751

Change-Id: If030ca04f5a7dd7e732dcc5dfb18d51faa7e7b79
This commit is contained in:
ztenghui
2014-08-22 10:35:04 -07:00
parent 730e9bceb7
commit 14aedd1fbf

View File

@@ -152,7 +152,7 @@ public class AnimatedVectorDrawable extends Drawable implements Animatable {
@Override
public void draw(Canvas canvas) {
mAnimatedVectorState.mVectorDrawable.draw(canvas);
if (isRunning()) {
if (isStarted()) {
invalidateSelf();
}
}
@@ -306,13 +306,25 @@ public class AnimatedVectorDrawable extends Drawable implements Animatable {
return false;
}
private boolean isStarted() {
final ArrayList<Animator> animators = mAnimatedVectorState.mAnimators;
final int size = animators.size();
for (int i = 0; i < size; i++) {
final Animator animator = animators.get(i);
if (animator.isStarted()) {
return true;
}
}
return false;
}
@Override
public void start() {
final ArrayList<Animator> animators = mAnimatedVectorState.mAnimators;
final int size = animators.size();
for (int i = 0; i < size; i++) {
final Animator animator = animators.get(i);
if (!animator.isRunning()) {
if (!animator.isStarted()) {
animator.start();
}
}