Diseño de materiales
Una de las ideas de Android L es que la ventana emergente necesita comenzar su aparición desde el punto donde el usuario pulsó la pantalla.
Por ejemplo, en Chrome Beta (@time * 5):
La idea es poder hacer crecer la vista desde cualquier punto de pivote (no sólo la posición predeterminada del botón de desbordamiento) ¿Alguien ha podido hacer esto o no es factible en este momento?
- Aspecto de ShareActionProvider
- Error al inflar la clase RecyclerView
- Cómo cambiar los iconos de los iconos del menú de navegación y desbordamiento de la barra de herramientas (appcompat v7)?
- Android Material recolorado Subtexto de EditText
- Creación de una aplicación para Android con targetSdkVersion de 25 y minSdkVersion 19
- ¿Es posible cambiar el color del icono de diseño de material de xml en Android?
- Cómo establecer el tamaño de texto de etiqueta flotante?
- Cómo cambiar la fuente de navegación Encabezado de cajón y ScrollingActivity?
- Botón de inicio de Android en la barra de herramientas de contracción con imagen
- Android Material Design Datepicker con AppCompat
- Barra de herramientas no está tiñendo MenuItems
- Uso correcto de un Spinner, siguiendo las directrices de diseño del material
- El icono de la aplicación no se muestra en la barra de acción
Parece que no hay manera limpia de hacer esto.
La única opción viable que he encontrado es escribir 4 diferentes animaciones xml (para las 4 esquinas, más si quieres permitir el crecimiento centrado), todas las ScaleAnimations de 0 a 1, con diferentes puntos de pivote para cada uno (las 4 esquinas).
A continuación, utilice un DialogFragment
:
@Override public Dialog onCreateDialog(Bundle savedInstanceState) { final Dialog dialog = super.onCreateDialog(savedInstanceState); dialog.getWindow().getAttributes().windowAnimations = R.style.downRightCornerAnimation; //instead of referring to R.*, call a method to get the specific //resource you need for a given start position return dialog; }
Y un ejemplo de tal animación:
<?xml version="1.0" encoding="utf-8"?> <scale xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/linear_interpolator" android:fromXScale="0.0" android:toXScale="1.0" android:fromYScale="0.0" android:toYScale="1.0" android:fillAfter="false" android:duration="200" android:pivotX = "0%" android:pivotY = "100%"/>
Es muy difícil de manejar y hacky, pero no creo que el SDK nos da una mejor herramienta para hacer esto (AFAIK no se puede simplemente inyectar un dinámico ObjectAnimator
en DialogFragment
o PopupWindow
)
Bueno, supongo que hacer una animación en una vista general debería funcionar para usted.
Para ello, implemente el siguiente código:
RecyclerView view = (RecyclerView) findViewById(R.id.your_view); Animation appear = AnimationUtils.loadAnimation(this, R.anim.appear); apear.startAnimation(view);
Luego, dentro de su carpeta res / anim (cree si no está allí), cree un archivo xml llamado appear.xml y coloque el código siguiente:
<set xmlns:android="http://schemas.android.com/apk/res/android"> <scale android:android:fromXScale="0" android:toXScale="1.0" android:fromYScale="0" android:toYScale="1.0" android:duration="1000" /> </set>
Cambie los valores para que se ajusten a sus propósitos.
Puede obtener más información en la guía de animación de los desarrolladores de Android y en la guía de animación de vista de animación .