2016-08-08 41 views
0

Ich möchte eine View auf 90 Grad drehen und aktualisieren Sie den Inhalt und wiederum drehen Sie es auf 90 Grad, und bisher habe ich versucht, unten Code.Drehen Anzeigen und aktualisieren Sie den Inhalt beim Drehen

ObjectAnimator anim1 = (ObjectAnimator) AnimatorInflater.loadAnimator(getActivity().getApplicationContext(), R.animator.flip_animator); 

        anim1.setTarget(v); 
        anim1.setDuration(1000); 
        anim1.start(); 


ImageView box = (ImageView) v.findViewById(R.id.box); 
     Bitmap bg = BoxUtils.getBoxBg(boxSize, boxMargin, Color.RED); 
     box.setImageBitmap(bg); 


       anim1.setTarget(v); 
       anim1.setDuration(1000); 
       anim1.start(); 

xml:

<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" 
    android:valueFrom="0" android:valueTo="90" android:propertyName="rotationY" > 
</objectAnimator> 

jedoch seine Arbeits aber seine veränderte seine Farbe, bevor es nächsten 90 Grad dreht, auch hatte ich geschrieben updation Code vor als nächsten Rotationscode. Irgendwelche Hilfe?

+0

Also, was Sie sagen 90 Grad drehen ist, die Farbe wechseln, drehen dann wieder? –

+0

Ja, das ist was ich will. –

Antwort

0

Das Problem besteht darin, dass sich Ihr Objekt asynchron von Ihrem Code dreht. Sie haben es so entworfen, dass der Code dort sitzt, während der Würfel die erste Drehung ausführt, und dann die Farbe ändert. Was passiert, ist, dass der Code die Animation startet und dann weiterläuft, während sich der Würfel dreht, weshalb er die Farbe früh ändert.

Die folgende Methode Ihrer Ansicht Animieren ein Ende Aktion hinzufügen, die Farbe ändern werden dann die letzten 90 Dreh:

View v; 
v.animate() 
.rotationY(90) 
.setDuration(1000) 
.withEndAction(new Runnable() { 
    @Override 
    public void run() { 
    ImageView box = (ImageView) v.findViewById(R.id.box); 
    Bitmap bg = BoxUtils.getBoxBg(boxSize, boxMargin, Color.RED); 
    box.setImageBitmap(bg); 

    v.animate().rotationY(90).setDuration(1000).start(); 
    } 
}).start(); 
+0

Ich kann nicht 'v' innerhalb' run() 'Methode von' Runnable() '! –

+0

v bezieht sich auf die Ansicht, die Sie animieren möchten. die eine, die ich benutze, ist ein Beispiel, du willst deine eigene über 'findViewById (R.id.your-object)' deklarieren –