Я хотел бы сделать два типа анимации на одном представлении: TranslateAnimation и несколько мгновений спустя ScaleAnimation. Проблема заключается в том, что при запуске ScaleAnimation представления возвращаются в исходное состояние (до TranslateAnimation). Есть ли способ сделать то, что я хочу?Android: Оставайтесь в состоянии более старой анимации, когда начинаете новую анимацию
0
A
ответ
0
Вы можете добавить слушателя в TranslateAnimation
, а когда это будет сделано, измените положение View
на конечную позицию анимации.
TranslateAnimation anim = new TranslateAnimation(...);
anim.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) { }
@Override
public void onAnimationRepeat(Animation animation) { }
@Override
public void onAnimationEnd(Animation animation) {
view.setX(NEW_X_POSITION);
view.setY(NEW_Y_POSITION);
}
});
Но я предлагаю на самом деле переход от старого TranslateAnimation
/ScaleAnimation
типа классов, в новой ViewPropertyAnimator
рамок (http://android-developers.blogspot.co.il/2011/05/introducing-viewpropertyanimator.html). В новой системе вам не придется менять позиции, как в приведенном выше коде, а синтаксис гораздо проще:
myView.animate().x(500).y(500);
вы также можете использовать AnimatorSet
создать набор анимации для воспроизведения вместе или один после другого.
Дополнительная информация: https://developer.android.com/reference/android/view/ViewPropertyAnimator.html
Да, это работает! Я вообще не думал о слушателе – Kemix