2012-06-25 114 views
3

我想在Android上的畫布上連續旋轉圓圈。我正在使用畫布繪製圓圈,並且我正在不斷旋轉圓圈。有可能的話,如果可能的話, 與代碼或示例可以幫助我非常感謝!如何在畫布上旋轉圓圈動畫

這裏是我的代碼在畫布上繪製圓:提前

import android.app.Activity; 
    import android.content.Context; 
    import android.graphics.Canvas; 
    import android.graphics.Color; 
    import android.graphics.Paint; 
    import android.os.Bundle; 
    import android.view.View; 

    public class AnimationActivity extends Activity { 
     /** Called when the activity is first created. */ 
     @Override 
     protected void onCreate(Bundle savedInstanceState) 
     { 
      super.onCreate(savedInstanceState); 
      setContentView(new SampleView(this)); 
     } 


    public class SampleView extends View 
    { 
     public SampleView(Context context) 
     { 
      super(context); 
      // TODO Auto-generated constructor stub 
     } 

     @Override 
     protected void onDraw(Canvas canvas) 
     { 
      Paint mPaint = new Paint(); 
      mPaint.setStyle(Paint.Style.STROKE); 
      mPaint.setStrokeWidth(10); 
      mPaint.setColor(Color.RED); 
      canvas.drawCircle(75, 75, 75, mPaint); 
     } 
    } 
    } 

謝謝!

+0

使用http://developer.android.com/reference/android/view/animation/RotateAnimation.html RotateAnimation –

回答

0
canvas.rotate(-rotate_angle, rotate_center_x, rotate_center_y); 
paint.setStyle(Paint.Style.FILL); 
paint.setColor(Color.RED); 
RectF oval3 = new RectF(rotate_center_x-150, rotate_center_y-50, rotate_center_x+150, rotate_center_y+50); 
canvas.drawOval(oval3, paint); 
//resume original angle 
canvas.rotate(rotate_angle, rotate_center_x, rotate_center_y); 

For More Information, click here.. :)

2

您可以使用動畫來旋轉你畫(使用Canvas)的圓圈。下面的代碼工作。我修改了您的代碼並添加了必要的更改。

import android.app.Activity; 
import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.os.Bundle; 
import android.view.View; 

public class AnimationActivity extends Activity { 

    public class SampleView extends View { 

     Paint mPaint = new Paint(); 
     private Animation anim; 

     public SampleView(Context context) { 
      super(context); 
      mPaint.setStyle(Paint.Style.STROKE); 
      mPaint.setStrokeWidth(10); 
      mPaint.setColor(Color.RED); 
     } 

     private void createAnimation(Canvas canvas) { 
      anim = new RotateAnimation(0, 360, getWidth()/2, getHeight()/2); 
      anim.setRepeatMode(Animation.RESTART); 
      anim.setRepeatCount(Animation.INFINITE); 
      anim.setDuration(10000L); 
      startAnimation(anim); 
     } 

     protected void onDraw(Canvas canvas) { 

      int cx = getWidth()/2; // x-coordinate of center of the screen 
      int cy = getHeight()/2; // y-coordinate of the center of the screen 

      // Starts the animation to rotate the circle. 
      if (anim == null) 
       createAnimation(canvas) 

      canvas.drawCircle(cx, cy, 150, mPaint); // drawing the circle. 
     }   
    } 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(new SampleView(this)); 
    } 
} 

Enjoy!