¿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
- ViewPager y FragmentPagerAdapter con fragmentos (no la biblioteca de soporte)
- Fragmento no se elimina visualmente
- Android.view.InflateException: Archivo XML binario línea # 10: Error al inflar fragmento de clase
- Descartar DialogFragment onClick
- ¿Cómo puedo manejar devoluciones de llamada para varios botones?
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! 🙂
- Mostrar Fragmento en Actividad: la clase no se puede instanciar
- ¿Es este un uso correcto de Android Fragments y NavigationDrawer?
- Fragmento sobre otro fragmento
- ¿Cómo puedo utilizar un cursorLoader en un ViewPager?
- Ocultar barra Tablayout en android
- Fragmentos de Android. Retener un AsyncTask durante la rotación de la pantalla o el cambio de configuración
- Separador de sombras entre fragmentos de Android
- Android onClick en XML vs. OnClickListener
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.
- ¿Cómo puedo insertar un sitio web en mi aplicación
- Cómo desencadenar un evento como iniciar una aplicación cuando se selecciona un texto