2010-05-19 2 views

ответ

2

Из API:

Анимации нет метода паузы.

http://www.androidjavadoc.com/1.0_r1/android/view/animation/package-summary.html

+0

благодарит за ответ. Да, я знаю, что нет метода паузы, вместо этого я реализовал пользовательский класс, который реализует Runnable и использует методы postDelayed, removeCallbacks для выполнения задачи. Я не уверен, что это правильный способ сделать это. – akc

24

Я понимаю, что эта нить довольно старый, но так как это был первый ответ на Google, когда я искал способ, чтобы приостановить анимацию, я просто опубликовать решение здесь для кого-то еще посмотреть. Что вам нужно сделать, это подкласс типа анимации, который вы хотите использовать, а затем добавить методы для приостановки и возобновления анимации. Вот пример для AlphaAnimation:

public class PausableAlphaAnimation extends AlphaAnimation { 

    private long mElapsedAtPause=0; 
    private boolean mPaused=false; 

    public PausableAlphaAnimation(float fromAlpha, float toAlpha) { 
     super(fromAlpha, toAlpha); 
    } 

    @Override 
    public boolean getTransformation(long currentTime, Transformation outTransformation) { 
     if(mPaused && mElapsedAtPause==0) { 
      mElapsedAtPause=currentTime-getStartTime(); 
     } 
     if(mPaused) 
      setStartTime(currentTime-mElapsedAtPause); 
     return super.getTransformation(currentTime, outTransformation); 
    } 

    public void pause() { 
     mElapsedAtPause=0; 
     mPaused=true; 
    } 

    public void resume() { 
     mPaused=false; 
    } 
} 

Это будет держать увеличить StartTime в то время как анимация приостановлена, эффективно удерживая его от отделки и сохраняя это состояние, в котором она была, когда вы приостановили.

Надеюсь, это поможет кому-то.

+0

Это сработало отлично. Спасибо. – Weston

+0

Спасибо, что поделитесь с нами, это очень полезно +1 с моей стороны! – Deepak

+0

@ Deepak это может быть работа для анимации кадра – Ashishsingh

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