android - transiciones - Aplicar una animación a varias vistas al mismo tiempo.
para que sirven las animaciones en power point (2)
Así que supongo que esto no es posible, así que creé un método de ayuda para aplicar la misma animación a una lista de vistas:
public void doRotations(ArrayList<View> views, int start, int end, int xprop, float xscale, int yprop, float yscale, int duration, Boolean fillAfter){
for(int i = 0; i < views.size(); i++){
RotateAnimation temp = new RotateAnimation(start, end, xprop, xscale, yprop, yscale);
temp.setDuration(duration);
temp.setFillAfter(fillAfter);
views.get(i).startAnimation(temp);
}
}
Definitivamente un truco, pero supongo que eso es todo lo que puedo hacer ahora mismo.
Así que me gustaría rotar unas cuantas vistas al mismo tiempo, todas usando las mismas especificaciones de rotación. El problema es que, por alguna razón, la rotación actúa de manera diferente para el segundo elemento. Aparentemente esto tiene que ver con el objeto de animación que realmente cambia de estado entre esas dos líneas de código. Obviamente, podría crear un objeto de animación separado y aplicarlo, pero creo que hay una forma más fácil (tengo aproximadamente 15 vistas)
Gira solo la primera vista correctamente:
Animation rotateAnim = AnimationUtils.loadAnimation(this, R.anim.rotationtoportrait);
target.startAnimation(rotateAnim);
lightBtn.startAnimation(rotateAnim);
Gira ambos correctamente
Animation rotateAnim = AnimationUtils.loadAnimation(this, R.anim.rotationtoportrait);
Animation rotateAnim2 = AnimationUtils.loadAnimation(this, R.anim.rotationtoportrait);
target.startAnimation(rotateAnim);
lightBtn.startAnimation(rotateAnim2);
XML:
<?xml version="1.0" encoding="utf-8"?>
<rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="-90"
android:toDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="500" android:fillAfter="true">
¿Alguien tiene alguna idea?
Hazlo asi:
ObjectAnimator anim = ObjectAnimator.ofFloat(view, "y", 100f);
arrayListObjectAnimators.add(anim);
ObjectAnimator anim1 = ObjectAnimator.ofFloat(view, "x", 0f);
arrayListObjectAnimators.add(anim1);
ObjectAnimator[] objectAnimators = arrayListObjectAnimators.toArray(new ObjectAnimator[arrayListObjectAnimators.size()]);
AnimatorSet animSetXY = new AnimatorSet();
animSetXY.playTogether(objectAnimators);
animSetXY.duration(1000);
animSetXY.start();