¿Por qué no funciona view.startAnimation (animación) cuando se llama desde un evento?
He creado una vista personalizada que utiliza un dummy TranslateAnimation para configurar algunas propiedades de diseño. Utilizo el interpolador para calcular la altura y lo aplico a una vista dentro del método applyTransformation () de TranslateAnimation.
Esto está funcionando bastante bien, si disparo la animación de mi actividad.
- Android: escucha para detectar cambios en las propiedades de una vista (por ejemplo, android: layout_marginTop)
- ¿Método óptimo para posponer onEvent?
- excepción thread.stop ()
- Cómo notificar de la actividad B a A que los datos de la lista se han cambiado?
- Recibir eventos onTouch y onClick con Android
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.i("test", "onCreate()"); view.expand(); // This method starts the animation }
Cuando trato de hacer lo mismo usando un evento táctil, no pasa nada.
@Override // This method is touch handler of the View itself public boolean onTouch(View v, MotionEvent event) { Log.i("test", "onTouch()"); this.expand(); // onTouch is part of the view itself and calls expand() directly return true; }
Mi método de expansión se ve así:
public void expand() { Log.i("test", "Expand!"); TranslateAnimation anim = new TranslateAnimation(0, 0, 0, 0) { @Override protected void applyTransformation(float interpolatedTime, Transformation t) { Log.i("test", "applyTransformation()"); super.applyTransformation(interpolatedTime, t); // do something } }; anim.setDuration(500); anim.setInterpolator(new AccelerateDecelerateInterpolator()); this.someInternalView.startAnimation(anim); }
Una vez que mi actividad es creada, Logcat muestra "onCreate ()" Dentro de mi evento de contacto, Logcat muestra "onTouch ()" Dentro del método expand (), Logcat muestra "Expand!" – llamado de la actividad o de un evento.
Dentro del método applyTransformation () Logcat muestra "applyTransformation ()" – ¡PERO! Sólo si se invoca expand () desde onCreate (). No se pudo intentar iniciar la animación de un evento.
Esto me parece una especie de problema de roscado. ¿Puede ser esto? ¿Hay algo que me falta? Por lo que veo de otros puestos, las animaciones de inicio de los eventos deben funcionar sin ningún problema …
¡Gracias por adelantado!
- SlidingUpPanelLayout y ScrollView
- ¿Qué evento Android solo se llama una vez hasta que se destruye la actividad?
- Android obtiene el valor del botón de radio seleccionado
- Mostrar diálogo utilizando PendingIntent
- Evento de incendio en AsyncTask finalizado
- Dispatch touch event desde una vista a su hermano WebView
- Android Touch UP no funciona
- Diferenciar el menú normal KeyEvent desde la apertura de IME
prueba esto:
public void expand() { Log.i("test", "Expand!"); runOnUiThread(new Runnable() { @Override public void run() { TranslateAnimation anim = new TranslateAnimation(0, 0, 0, 0) { @Override protected void applyTransformation(float interpolatedTime, Transformation t) { Log.i("test", "applyTransformation()"); super.applyTransformation(interpolatedTime, t); // do something } }; anim.setDuration(500); anim.setInterpolator(new AccelerateDecelerateInterpolator()); this.someInternalView.startAnimation(anim); } }); }
- ¿Cómo implementar la galería de fotos de dispositivos personalizados para android?
- Instagram de Android inicie sesión sin utilizar la vista web