2011-12-07 15 views
22

En mi aplicación voy a configurar el alfa después de una animación. Como como:¿Cómo crear el retraso de 1 segundo antes de configurar el alfa de la vista?

hideMenu = AnimationUtils.loadAnimation(getApplication(), R.anim.menu_layout_hide); 
menuLayout.startAnimation(hideMenu); 
menuLayout.setVisibility(View.GONE); 

pero quiero establecer el retraso de 1 segundo antes de que el alfa establecido XX la vista. Como por eso no puedo ver la animación de ese diseño. Entonces, ¿cómo es posible?

Gracias.

Respuesta

45

En el archivo de animación xml puede utilizar android:startOffset atributo:

android:startOffset int. The amount of milliseconds the animation delays after start() is called. 
+0

Gracias por la respuesta. Déjame intentarlo. –

+0

si no te importa, no tiene sentido postDelayado en la animación porque la animación misma tiene el método setStartDelay. Por favor, no tomes mi palabra como ofensa, pero te digo lo que siento. – duggu

+0

@Duggu gracias, respuesta fija. –

68

no se puede utilizar el

androide: StartOffset int. La cantidad de milisegundos de la animación se retrasa después de que se invoca start().

en su animación xml?

Ver the animation resource documentation.

+1

Esto debe marcarse como respuesta correcta. –

17

Suponga que está utilizando el método de vista .animate(), se puede establecer el offset de inicio:

view.animate().x(100) 
       .setDuration(5000) 
       .setStartDelay(1000); 
4

Handler es una buena técnica para lograr esto.

new Handler().postDelayed(new Runnable() 
{ 
    @Override 
    public void run() 
    { 
    view.startAnimation(animation); 
    } 
}, 1000); 
0

En su caso, usted puede simplemente hacer como esto

hideMenu = AnimationUtils.loadAnimation(getApplication(), R.anim.menu_layout_hide); 

hideMenu.setStartOffset(1000); 

menuLayout.startAnimation(hideMenu); 
menuLayout.setVisibility(View.GONE); 

En este caso se puede controlar de forma dinámica el valor de la hora de inicio de la actividad

Cuestiones relacionadas