android - transiciones - actividades de conmutación sin animación
transicion de actividades android studio (7)
¿Cómo puedo usar correctamente el indicador de intención FLAG_ACTIVITY_NO_ANIMATION
en el archivo AndroidManifest? Supongo que mi problema es trivial, pero no puedo encontrar un buen ejemplo o solución para él.
<intent-filter>
<data android:name="android.content.Intent.FLAG_ACTIVITY_NO_ANIMATION" />
</intent-filter>
Sin embargo, el compliador no informa ningún error, pero los data
no son correctos. Solo quiero deshabilitar la animación en caso de cambiar de actividades. Puedo usar getWindow().setWindowAnimations(0);
en onCreate o onResume en lugar de usar flag es mejor, ¿no?
Puedo usar también en el código:
Intent intent = new Intent(v.getContext(), newactivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
getContext().startActivity(intent);
Pero quiero usar esta bandera en el Manifiesto de Android. Para desactivar la animación también en caso de que regrese de la segunda actividad a la primera.
Aquí hay una solución de una sola línea que funciona por tan solo minSdkVersion 14
que debe insertar en res/styles.xml
:
<item name="android:windowAnimationStyle">@null</item>
al igual que:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="android:windowAnimationStyle">@null</item>
</style>
...
</resources>
¡Aclamaciones!
Este no es un ejemplo de uso o una explicación de cómo usar FLAG_ACTIVITY_NO_ANIMATION
, sin embargo responde cómo deshabilitar la animación de cambio de Activity
, tal como se solicita en el título de la pregunta:
Android, ¿cómo desactivar el efecto ''borrar'' al iniciar una nueva actividad?
Prueba este código,
this.startActivity(new Intent(v.getContext(), newactivity.class).addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION));
Puedes crear un estilo,
<style name="noAnimTheme" parent="android:Theme">
<item name="android:windowAnimationStyle">@null</item>
</style>
y establecerlo como tema para su actividad en el manifiesto:
<activity android:name=".ui.ArticlesActivity" android:theme="@style/noAnimTheme">
</activity>
También puede definir un estilo para especificar entradas y salidas de animaciones personalizadas. http://developer.android.com/reference/android/R.attr.html#windowEnterAnimation
Si su contexto es una actividad, puede invocar la anulación de TransiciónPending :
Llame inmediatamente después de uno de los sabores de startActivity (Intent) o termine de especificar una animación de transición explícita para realizar a continuación.
Entonces, programáticamente:
this.startActivity(new Intent(v.getContext(), newactivity.class));
this.overridePendingTransition(0, 0);
También puedes hacer esto en todas las actividades de las que no quieras hacer la transición:
@Override
public void onPause() {
super.onPause();
overridePendingTransition(0, 0);
}
Me gusta este enfoque porque no tiene que meterse con el estilo de su actividad.
crea tu propio estilo anulando a android: Theme
<style name="noAnimationStyle" parent="android:Theme">
<item name="android:windowAnimationStyle">@null</item>
</style>
Entonces úsala en manifiesto así:
<activity android:name=".MainActivity"
android:theme="@style/noAnimationStyle">
</activity>