Muestro un DialogFragment
cuando el usuario toca una fila en un ListView
. Me gustaría animar la visualización del diálogo para que crezca desde el centro de la fila. Se puede ver un efecto similar al abrir una carpeta desde el lanzador.
Una idea que tuve es una combinación de TranslateAnimation
y ScaleAnimation
. ¿Hay otra manera?
android
android-fragments
android-animation
Edward Dale
fuente
fuente
Respuestas:
Al ser
DialogFragment
un contenedor para laDialog
clase, debe establecer un tema en su baseDialog
para obtener la animación que desea:Luego, solo necesita definir el tema que incluirá la animación deseada. En styles.xml agregue su tema personalizado:
Ahora agregue los archivos de animación en la carpeta res / anim :
(la
android:pivotY
es la clave)anim_in.xml
anim_out.xml
Finalmente, lo complicado aquí es hacer que su animación crezca desde el centro de cada fila. Supongo que la fila está llenando la pantalla horizontalmente, por lo que, por un lado, el
android:pivotX
valor será estático. Por otro lado, no puede modificar elandroid:pivotY
valor mediante programación.Lo que sugiero es que defina varias animaciones, cada una de las cuales tiene un valor de porcentaje diferente en el
android:pivotY
atributo (y varios temas que hacen referencia a esas animaciones). Luego, cuando el usuario toque la fila, calcule la posición Y en porcentaje de la fila en la pantalla. Conociendo la posición en porcentaje, asigne un tema a su diálogo que tenga elandroid:pivotY
valor .No es una solución perfecta, pero podría ayudarte. Si no le gusta el resultado, le sugiero que se olvide
DialogFragment
y anime unView
crecimiento simple desde el centro exacto de la fila.¡Buena suerte!
fuente
setStyle(DialogFragment.STYLE_NORMAL, R.style.MyCustomTheme)
enonCreate(bundle)
Ver: developer.android.com/reference/android/app/DialogFragment.htmlMira este código, me funciona
// Deslice hacia arriba la animación
// Deslice la animación hacia abajo
// Estilo
// Fragmento de diálogo interior
fuente
DialogFragment tiene un método getTheme () público que puede anular por esta razón exacta. Esta solución usa menos líneas de código:
fuente
AppTheme.NoActionBar
mientras DialogFragment usa el valor predeterminadoAppTheme
. El método anterior resolvió mi problema al tener un tema consistente tanto en el fragmento como en la actividad.Para obtener un diálogo de pantalla completa con animación, escriba lo siguiente ...
Estilos:
res / anim / slide_up.xml
res / anim / slide_down.xml
Código Java:
fuente
Use la vista de decoración dentro de onStart en su fragmento de diálogo
fuente
En DialogFragment, la animación personalizada se llama onCreateDialog. 'DialogAnimation' es un estilo de animación personalizado en la respuesta anterior.
fuente
¿Ha consultado la capacitación para desarrolladores de Android sobre cómo hacer zoom en una vista ? Podría ser un buen punto de partida.
Probablemente desee crear una clase personalizada que se extienda
DialogFragment
para que esto funcione.Además, eche un vistazo a Jake Whartons NineOldAndroids para la compatibilidad de API de animación de nido de abeja hasta el nivel 1 de API.
fuente
Si desea trabajar sobre API, debe hacerlo dentro de su DialogFragemnt-> onStart y no dentro de onCreateDialog
fuente
Agregue este código en valores anim
llamar a styles.xml
En el código java: establecer Onclick
configuración en método:
fuente