2016-11-02 6 views
0

Я хотел бы сделать два типа анимации на одном представлении: TranslateAnimation и несколько мгновений спустя ScaleAnimation. Проблема заключается в том, что при запуске ScaleAnimation представления возвращаются в исходное состояние (до TranslateAnimation). Есть ли способ сделать то, что я хочу?Android: Оставайтесь в состоянии более старой анимации, когда начинаете новую анимацию

ответ

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

+0

Да, это работает! Я вообще не думал о слушателе – Kemix

 Смежные вопросы

  • Нет связанных вопросов^_^