Начало анимации по кадрам

У меня есть основной вопрос о начале кадровой анимации.

Когда я вызываю метод AnimationDrawable.start () из моего кода напрямую, он, похоже, не работает.

public void onCreate(Bundle savedInstanceState) { ... mAnimation.start(); ... } 

Но если я поместил эту строку внутри метода обратного вызова onClick (), нажав кнопку бутона, начнется анимация.

Почему эта строка не работает в коде?

Благодаря!

Код:

 public class MyAnimation extends Activity { @Override public void onCreate(Bundle savedInstanceState) { AnimationDrawable mframeAnimation = null; super.onCreate(savedInstanceState); setContentView(R.layout.my_animation); ImageView img = (ImageView) findViewById(R.id.imgMain); BitmapDrawable frame1 = (BitmapDrawable) getResources().getDrawable( R.drawable.splash1); BitmapDrawable frame2 = (BitmapDrawable) getResources().getDrawable( R.drawable.splash2); int reasonableDuration = 250; mframeAnimation = new AnimationDrawable(); mframeAnimation.setOneShot(false); mframeAnimation.addFrame(frame1, reasonableDuration); mframeAnimation.addFrame(frame2, reasonableDuration); img.setBackgroundDrawable(mframeAnimation); mframeAnimation.setVisible(true, true); //If this line is inside onClick(...) method of a button, animation works!! mframeAnimation.start(); } 

}

3 Solutions collect form web for “Начало анимации по кадрам”

Важно отметить, что метод start (), вызываемый в AnimationDrawable, не может быть вызван во время метода onCreate () вашей Activity, потому что AnimationDrawable еще не полностью привязан к окну. Если вы хотите немедленно воспроизвести анимацию, не требуя взаимодействия, вы можете вызвать ее из метода onWindowFocusChanged () в своей Activity, который вызывается, когда Android переключит ваше окно в фокус. Очень конец страницы http://developer.android.com/guide/topics/graphics/2d-graphics.html

  ImageView img = (ImageView)findViewById(R.id.some layout); AnimationDrawable frameAnimation = (AnimationDrawable)img.getDrawable(); frameAnimation.setCallback(img); frameAnimation.setVisible(true, true); frameAnimation.start(); 

и для добавления анимации вы можете сделать что-то вроде

     

Используйте Runnable для вставки сообщения start () в очередь сообщений, просто добавьте этот LOC, чтобы заменить mFrameAnimation.start ();

 img.post(new Starter()); 

Внутренний class помощника:

 class Starter implements Runnable { public void run() { mFrameAnimation.start(); } } 

для воспроизведения анимации только в onCreate (…) add:

 ImageView mImageView=(ImageView) findViewById(R.id.image); mImageView.setBackgroundResource(R.anim.film); mFrameAnimation = (AnimationDrawable) mImageView.getBackground(); mImageView.post(new Runnable(){ public void run(){ mFrameAnimation.start(); } }); 
  • Как создать анимированный GIF из JPEG в Android (разработка)
  • Анимировать настраиваемый диалог
  • анимация JPanel (слайд) с таймером
  • Анимация в ноутбуке iPython
  • Анимация в панели уведомлений Пользовательский вид
  • CSS3 - 3D Flip Animation - IE10 transform-origin: сохранение-3d обходное решение
  • Устаревшая анимация SMIL SVG заменена эффектами CSS или веб-анимации (наведите курсор, щелкните)
  • Показать и скрыть вид с помощью анимации слайдов вверх / вниз
  • Цепочки анимации jQuery, которые влияют на различные элементы
  • Как анимировать путь на canvasе - андроид
  • Как остановить анимацию (cancel () не работает)
  • Давайте будем гением компьютера.