AnimationDrawable en el problema de Android
Tengo un problema común haciendo animationdrawable en Android. Yo quería iniciar una animación cuando se inicia la Actividad, en el método onCreate (), pero como mucha gente ha encontrado, no funciona.
He leído un montón de consejos, pero nada parece funcionar para mí. Si comienzo la animación en onClick () funciona, requiere la entrada del usuario, no comenzar inmediatamente.
- Revertir una animación
- ¿Cómo hacer que la animación de GridView sea como en la aplicación de Google Keep?
- Animar el elemento ListView a la papelera
- Rendimiento deficiente de la animación de zoom personalizado de Android
- Animación: en android cómo escalar y atenuar una vista que consta de varias líneas de texto desde un punto central
He intentado iniciarlo en un hilo separado en onCreate (), pero que no funciona bien. He leído aquí:
Http://code.google.com/p/android/issues/detail?id=1818
Pero ninguno de los consejos funcionó, o no pude entenderlo.
¿Puede alguien ayudar?
- ViewPager anidado en ViewPager
- Sacudidas de animación en el dispositivo android en titanio
- Diseño de materiales
- Androides ObjectAnimator.ofFloat no funciona correctamente
- Manera recomendada de cargar (no interactivo) animaciones (hechas usando Maya) en OpenGL ES en iOS y Android
- SetRotationY () width API10 en Android
- Android cómo hacer animated setSelection () para listfragment?
- ¿Cómo funcionan las animaciones de Android bajo el capó?
He enfrentado problemas similares, y cambiado a sobreescribir onWindowFocusChanged () en lugar de onCreate () y onResume ():
public void onWindowFocusChanged(boolean hasFocus) { if (hasFocus) { animation.start(); } else { animation.stop(); } }
Creo que tienes que iniciar la animación después de la inicialización de la vista en cuestión es completa. Usted debe ser capaz de hacer algo como esto:
final ImageView tweenImage = (ImageView) findViewById(R.id.imageView1); tweenImage.setBackgroundResource(R.anim.cubicfacetween); tweenImage.post(new Runnable() { @Override public void run() { AnimationDrawable frameAnimation = (AnimationDrawable) tweenImage.getBackground(); frameAnimation.start(); } }
Para configurar src en imageView
((ImageView)findViewById(R.id.no_network_icon)).post(new Runnable() { @Override public void run() { AnimationDrawable drawable = (AnimationDrawable) ((ImageView)findViewById(R.id.no_network_icon)).getDrawable(); drawable.start(); } });
De acuerdo con el enlace que proporcionó tiene que iniciar la animación en un hilo separado. En Java lo haces mediante la implementación de la interfaz Runnable y comienza con
Thread t = new Thread(new MyRunnable()); // MyRunnable inherits Runnable t.start();
Usted puede también escribir el código como esto
new Thread(new Runnable() { public void run(){ // some code that runs outside the ui thread. } }).start();
Si no desea implementar una clase completamente nueva. Este último, por supuesto, no es tan bonito, pero si usted está haciendo un pequeño proyecto que puede ser bueno saber.
¿Lo has probado de esta manera o has empezado tu hilo de otra manera?
Por favor, lea también Thread sin dolor que pasa por las posibilidades que tiene para realizar acciones fuera del hilo ui y cómo publicar métodos que se ejecuta en el hilo ui de sus propios hilos.
Editar: Después de revisar el enlace que publicó, tiene que esperar un poco antes de iniciar el subproceso, probablemente hasta que onCreate esté completo. De acuerdo con el diagrama de flujo en esta página , debería ser capaz de iniciar su animación más adelante, por ejemplo en la llamada onResume. ¿Ha intentado iniciarlo en un método llamado después de onCreate?
Sólo debe crear las cosas en onCreate, y "iniciar" en onStart o onResume.
- TextView: lineSpacingMultiplier y lineSpacingExtra también se aplica a la última línea
- Android Get Keys de preferences.xml