2016-03-22 5 views
0
while(true){ 
     if(Togglebutton1.isChecked()) { 
      button2.setRotation(button2.getRotation() + 5); 
     else{ 
      button2.setRotation(button2.getRotation() - 5); 
     } 
    } 

Es funktioniert nicht. Drehen der Taste2 um 300msWie kann ich Knopf non-stop drehen

+0

Rotation Animation statt auf Tasten anwenden. –

Antwort

1

Sie sollten nicht versuchen, Ihre Ansichten so zu animieren. Das erste Problem ist, dass es den UI-Thread blockiert und nicht aktualisiert wird. Das zweite Problem ist, dass Sie Android nicht erlauben, eigene Optimierungen durchzuführen.

Sie sollten vielmehr die folgenden Befehle verwenden:

Animation anim = new Animation() { 
    protected void applyTransformation(float interpolatedTime, Transformation t) { 
     super.applyTransformation(interpolatedTime, t); 
     button2.setRotation(360 * interpolatedTime); 
    } 
}; 
anim.setRepeatCount(Animation.INFINITE); 
anim.setDuration(500); 
button2.startAnimation(anim); 

Diese sorgen nicht für die button1 Makeln. Ein Listener sollte zu dieser Schaltfläche hinzugefügt werden, die die Animation stoppt und eine neue in der anderen Richtung startet.

1

können Sie Rotation Animation erstellen:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/linear_interpolator"> 
    <rotate 
     android:duration="1500" 
     android:fromDegrees="0" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:repeatCount="infinite" 
     android:toDegrees="360"/> 
</set> 

und wenden Sie es auf folgende Weise:

Animation rotation = AnimationUtils.loadAnimation(this, R.anim.rotation); 
button.startAnimation(rotation); 
Verwandte Themen