Pregunta

¿Cuál es la mejor manera de ir a una nueva actividad, pero hacer que se vea como las diapositivas de la actividad hacia la izquierda y la nueva actividad ingresa a la pantalla? Estoy usando intentos para llamar a la nueva actividad, ¿es esa la forma de hacerlo si quiero que la aplicación sea ligera?

Para explicar un poco mejor: en mi teléfono Android puedo deslizar la vista con la casa meny a la derecha y luego ingresa a una transmisión de un amigo desde la izquierda y tiene lugar en la pantalla. Quiero hacerlo en mi aplicación con botones, es el "deslizamiento" que estoy después. ¡Gracias!

¿Fue útil?

Solución

En Android OS 2.1 o posterior creo que puede usar el OverridePendingTransition () Método para proporcionar el tipo de transición entre las animaciones de actividades que está buscando.

En primer lugar, defina un par de recursos de animación en /res/anim/. Aquí hay uno que se llama right_slide_out.xml :

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_decelerate_interpolator">
    <translate
        android:fromXDelta="0"
        android:toXDelta="100%p"
        android:duration="500"
    />
</set>

Otro llamó right_slide_in.xml :

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_decelerate_interpolator">
    <translate
        android:fromXDelta="100%p"
        android:toXDelta="0"
        android:duration="700"
    />
</set>

Luego, cuando comience la nueva actividad, use el método de OverridePendingTransition como en:

startActivity(intent);
overridePendingTransition  (R.anim.right_slide_in, R.anim.right_slide_out);

Eso debería manejar las animaciones de transición para comenzar la actividad.

Para el reverso, cuando esa actividad termina y vuelves al original, es un poco más neblina.

Si tiene algún control de interfaz de usuario que termina esa actividad y llama actividad.

Para manejar el caso donde el usuario finaliza la actividad presionando el botón Atrás, use algo como lo siguiente:

@Override
public void onBackPressed() 
{

    this.finish();
    overridePendingTransition  (R.anim.right_slide_in, R.anim.right_slide_out);
}

Otros consejos

Puede usar A Left_slide_out.xml (simplemente cambie la toxdelta en Josh's Right_slide_out.xml para leer -100%P), para que la actividad anterior desaparezca a la izquierda (y también tenga la misma duración en ambas animaciones).

Sí, usar intentos es la forma estándar de comenzar otra actividad, y generalmente hace lo deslizante que menciona. por ejemplo, startActivity (nueva intención (esto, myNextActivity.class)); lo haré.

Jems es correcto. Por defecto, obtendrá una animación deslizante al lanzar una nueva intención.

Si está buscando una animación más personalizada, puede usar anularpendingTransition. Tenga en cuenta que se agregó en la API Nivel 5. Vea esto Demostración de API Para el uso de la muestra.

Hay un poco de confusión sobre cuáles son las animaciones de entrada y salida. Para aquellos que todavía están reflexionando sobre él, aquí hay una plantilla.

overridePendingTransition(
    enterAnimationForCalledActivity, 
    exitAnimationForCallingActivity
);

Esto probablemente debería despejar un poco el aire.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top