¿Cómo usar animaciones predeterminadas en Android?

Estoy tratando de usar las animaciones por defecto para la actividad con fragmentos .. aquí he encontrado algo sobre él:

Android: usando la animación predeterminada de la actividad para Fragmentos

El problema es: ok, necesito (por ejemplo) "activityOpenEnterAnimation" .. ¿cómo puedo usarlo?

El uso del siguiente código no funcionará:

FragmentTransaction transaction = fragmentManager.beginTransaction(); transaction.setCustomAnimations(android.R.anim.activityOpenEnterAnimation, android.R.anim.activityOpenExitAnimation); transaction.replace(R.id.container, fragment) .addToBackStack(((Object) fragment).getClass().getName()) .commit(); 

¿Sugerencias? ¡Gracias! 🙂

2 Solutions collect form web for “¿Cómo usar animaciones predeterminadas en Android?”

Hoy en día, la documentación de Android claramente recomienda no utilizar recursos directamente de android.R.* , Ya que cada versión de la plataforma tiene cambios en ellos. Incluso algunos recursos desaparecen de una versión a otra, por lo que no debe confiar en ellos. Por otro lado, muchos recursos son privados y no están disponibles en el código de un desarrollador.

La forma más segura (y recomendada) es simplemente copiar y pegar los recursos que necesita (en este caso, las animaciones) del código fuente de la versión de Android que desee en su propio código, y usarlos a través de la R.* regular.

Puede explorar el código fuente de Android de muchas maneras, como se explica en [1].

[1] ¿Dónde puedo encontrar el código fuente de Android en línea?

Logré que funcionara de esta manera:

 static public int getResourceIdFromCurrentThemeAttribute(FragmentActivity activity, int attribute){ TypedValue a = new TypedValue(); activity.getTheme().resolveAttribute(attribute, a, false); return a.resourceId; } //This type of fragment will be opened like an activity static public void openActivityLikeFragment(FragmentActivity activity, BaseFragment fragment, int containerId, String stackRef) { FragmentManager fm = activity.getSupportFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); //The fragment open/close transition should have the same animations as its activity ft.setCustomAnimations( getResourceIdFromCurrentThemeAttribute(activity, android.R.attr.activityOpenEnterAnimation), getResourceIdFromCurrentThemeAttribute(activity, android.R.attr.activityOpenExitAnimation), getResourceIdFromCurrentThemeAttribute(activity, android.R.attr.activityCloseEnterAnimation), getResourceIdFromCurrentThemeAttribute(activity, android.R.attr.activityCloseExitAnimation) ); ft.replace(containerId, fragment); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); ft.addToBackStack(stackRef); ft.commit(); } 

Esta solución es más segura que la referencia directa a un recurso, ya que hace referencia a un atributo que no cambiará sin algunas advertencias de depreciación.

  • Fragmento está en backstack
  • ¿Cómo utilizar Fragments y objectAnimator en versiones anteriores de Android?
  • Error al agregar fragmentos dinámicamente -java.lang.IllegalStateException:
  • FragmentTabHost: las pestañas no son direccionables hasta que se vean por primera vez
  • Fragmentos en ViewPager se recrean
  • Fragmento de actualización en recarga
  • ¿Cómo puede manejar el descarte de un DialogFragment (compatibilidad lib) al completar un AsyncTask
  • Establecer dinámicamente la altura de ViewPager
  • Cardview dentro de la pestaña
  • Cómo extender Fragmento y Actividad
  • Vinculación y desvinculación de Android Service a / de Fragment (en ViewPager)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.