RelativeLayout hace que la animación no funcione?
Tengo una actividad cuya presentación sólo contiene un VideoView. Aquí está el xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <VideoView android:id="@+id/videoplayer" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentRight="true" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_alignParentBottom="true" > </VideoView>
Estoy tratando de aplicar esta animación a la VideoView después de que deja de jugar:
- Cambio de color de TextView en el enfoque / presione
- Android: EditText no rellenar ScrollView y RelativeLayout
- Programar de forma programada android: layout_centerHorizontal
- ¿Configurar la imagen de fondo para el diseño relativo?
- Android: configurar el diseño de fondo de forma programática
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromYDelta="0%" android:toYDelta="-100%" android:duration="500"/> <scale android:fromXScale="1.0" android:toXScale="0" android:fromYScale="1.0" android:toYScale="0" android:duration="500" android:pivotX="50%" android:pivotY="0%" /> </set>
Esto funciona perfectamente como se muestra. Pero si cambio de LinearLayout a RelativeLayout en el diseño, la animación ya no funciona y el video se congela en el último fotograma que se muestra antes de que se detenga.
¿Por qué el tipo de diseño raíz en mi actividad hace que una animación no funcione correctamente?
EDIT: Para añadir a la rareza si agrego este TextView
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" "> </TextView>
Al RelativeLayout debajo de VideoView, la animación funcionará. Sin embargo si tomo el espacio fuera del android: el elemento del texto de esto entonces está de nuevo a no trabajar. Oo
EDIT: He concedido la recompensa a Beowulf Bjornson por la buena punta de usar el nuevo marco de animación.
Pero todavía estoy muy interesado si alguien alguna vez se da cuenta de lo que está pasando con las animaciones de estilo antiguo en esta situación estaría más que feliz de lanzar algunos puntos más para ello.
- RelativeLayout con scrollview no desplazamiento
- ImageView no se extiende (Android)?
- RelativeLayout con MATCH_PARENT no funciona
- ImageView no llenará el padre
- Android alinear el centro de diseño
- Android RelativeLayout alinear preocupación
- Android: onClickListener para relativelayout
- Android RelativeLayout fill_parent comportamiento inesperado en un ListView con diferentes alturas de fila
No estoy seguro si el uso de una biblioteca de terceros es una solución viable para usted, pero recomiendo encarecidamente NineOldAndroids, por lo que puede utilizar las capacidades de animación de 3.0+ en versiones anteriores de Android. Hacen que este trabajo sea más fácil.
Aquí está el enlace: http://nineoldandroids.com/
Entonces, en su actividad usted puede hacer algo tan fácil como:
VideoView view = (VideoView) findViewById(R.id.videoplayer); animate(view).scaleX(0).scaleY(0).setDuration(500L);
Lo he probado utilizando RelativeLayout y funciona como se esperaba.
EDIT: Si desea utilizar la implementación nativa de nido de abeja, esta API específica es 3.1+ y debe utilizarse de forma nativa como la siguiente:
view.animate().scaleX(0).scaleY(0).setDuration(500L);
Y si quieres soporte nativelly 3.0, tendrás que usarlo así:
AnimatorSet set = new AnimatorSet(); set.playTogether( ObjectAnimator.ofFloat(view, "scaleX", 1.0f, 0.0f), ObjectAnimator.ofFloat(view, "scaleY", 1.0f, 0.0f), ); set.setDuration(500).start();
No estoy seguro, pero en mi aplicación tengo RelativeLayout y Animaion y también el vídeo funciona bien.
Si VideoView es la única vista del diseño, ponga la altura relativeLayout y Width como fill_parent y también para el VideoView y luego intente.
Espero que funcione. Si no, entonces hágamelo saber.