2011-09-28 12 views
5

Necesito crear un fotograma de la animación fotograma a fotograma, pero tengo algunos problemas tengo 30 imágenes PNG que componen mi animación, cargo mi AnimationDrawable con este código:problemas de duración de las imágenes AnimationDrawable

 mCurrentAnimation = new AnimationDrawable(); 
     mCurrentAnimation.setOneShot(true); 
     int resId; 
     for (int j = 1; j < 31; j++) 
     {     
      resId = getResources().getIdentifier("resName", "drawable", "com.mindcolorstest.main"); 
      mCurrentAnimation.addFrame(getResources().getDrawable(resId), 1); 
     } 

Y lógicamente " mCurrentAnimation.start() "para iniciar En el dispositivo mdpi la animación funciona bien pero tengo algunos problemas con la duración de cada fotograma, en el emulador hdpi o en el dispositivo tengo algo de retraso y si reduciré la duración de fotogramas (tanto en mdpi como hdpi dispositivo) la animación no irá más rápido, al igual que existe una duración mínima para cada fotograma. Algunos consejos y trucos? No sé lo que tengo que hacer Q_Q Gracias de todos modos

+0

Por qué está utilizando un bucle for aquí las imágenes se cargan por sí mismas en el momento definido ... –

+0

el bucle for es solo para cargar imágenes en el objeto AnimationDrawable ... la mCurrentAnimation.start() iniciará el cambio de fondo de la imagen y creará la animación resultante –

+0

Esa es una forma incorrecta, supongo, en qué widget está mostrando la animación .... –

Respuesta

0

estoy de acuerdo en esto, hago más o menos lo mismo con una lista de animación xml incluso en el S4 tengo un tiempo de animación mucho más largo por fotograma, entonces Yo he puesto. (He establecido la duración a 3ms por cuadro).
escribí acerca de 16,16ms por cuadro como promedio mínimo de más de 30 ciclos y 85 cuadros.

esto puede o no responder a la línea scheduleSelf(mAnimationRunnable, now + 1000/60); en animate() en DrawableContainer. solo una conjetura porque 1000/60 = 16,66 lo que debería convertirse en 16 como int/long cast ..

pero también podría provenir de alguna otra limitación en el código o la velocidad del hardware.
no he comprobado si el código en esta línea se llama y está causando esto porque de alguna manera no puedo romper allí.
sin embargo, creo que ninguna pantalla es tan rápida en realidad, por lo que parece inteligente ..

Cuestiones relacionadas