2012-03-28 15 views
0

Circle Rotation onTouch Funktioniert nur, wenn einmal darauf geklickt wird und nichts bewirkt.Circle Rotation onTouch

hier ist mein Code:

setOnTouchListener(new OnTouchListener() { 

     public boolean onTouch(View v, MotionEvent event) { 
      int n = 0; 
      postInvalidate(); 
      for(int i=0; i<360; i++){ 
       setRotationX(n + 1); 
      } 
      forceLayout(); 

ich hoffe jemand kann mir helfen. Wie kann ich den Code so aussehen, dass es mehrere Male funktioniert?

+0

Ist es nicht einfacher, die Animation einfach nach der Berührung zu starten? – goodm

+0

Danke für den Kommentar, aber wie kann ich so eine Animation machen? – user1297720

Antwort

3

Wenn Sie die Verwendung goodm Lösung, sollten Sie in Ihrem Manifest hinzufügen:

Dies ist für ICS und Pre-ICS.

+1

Es gibt etwas Neues, wie viele neue Dinge sind in ICS? – goodm

+0

Ich weiß nur, dass mit diesem Code alle Animationen und Toasts gut funktionieren. – fr4n

+1

ok, danke ..... – goodm

1

Dazu Animation benötigen Sie einen Ordner "Anim" in res Ordner erstellen und eine solche XML-Datei hinzufügen:

<?xml version="1.0" encoding="UTF-8"?> 
<rotate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromDegrees="0" 
    android:toDegrees="360" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:duration="1000"/> 

in Ihre Java-Klasse versuchen:

Animation a = AnimationUtils.loadAnimation(this, R.anim.yourAnim); 
a.setAnimationListener(new AnimationListener() 
{ 
    @Override 
    public void onAnimationEnd(Animation animation) 
    { 
     animPlaying = false; 
    } 

    @Override 
    public void onAnimationStart(Animation animation) 
    { 
     animPlaying = true; 
    } 

    @Override 
    public void onAnimationRepeat(Animation animation){} 
}); 

public boolean onTouch(View v, MotionEvent event) 
{ 
     int n = 0; 
     postInvalidate(); 
     if(aninmPlaying == false) 
     { 
      yourView.startAnimation(a); 
     } 
     forceLayout();