在Android中绘制连续旋转的正方形

时间:2018-11-05 20:32:46

标签: java android android-canvas android-graphics

我想在Android设备的屏幕上绘制一个正方形,并希望该正方形每秒钟连续旋转一次。我正在使用自定义View类绘制正方形。但是,当我在“画布”对象上调用“旋转”时,正方形不会旋转。 我的代码是

public class MySquareView extends View{
    private Rect square;
    private Paint paint;

    public MySquareView(Context context){
    super(context);

    int x = 50;
    int y = 50;
    int sideLength = 200;

    square = new Rect(50, 50, 200, 200);

    paint = new Paint();
    paint.setColor(Color.GRAY);
    }

    @Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    canvas.drawColor(Color.WHITE);
    canvas.drawRect(rect, paint);

    canvas.save();

    canvas.rotate(25, rect.centerX()/2, rect.centerY()/2);

    canvas.drawRect(rect, paint);

    canvas.restore();




    //draw(canvas);

}
@Override
public void draw(Canvas canvas) {
    super.draw(canvas);

        canvas.save();

        canvas.rotate(25, rect.centerX()/2 , rect.centerY()/2);

        canvas.drawRect(rect, paint);

        canvas.restore();

      }

  }

我的活动班级:

public class MainActivity extends AppCompatActivity {

Canvas canvas;

CustomSquareView customSquareView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //setContentView(R.layout.activity_main);
    customSquareView = new CustomSquareView(this);
    setContentView(customSquareView);

    runTimer();
}

public void runTimer(){

    canvas = new Canvas();
    canvas.drawColor(Color.WHITE);
    final Handler handler = new Handler();

    handler.post(new Runnable() {
        @Override
        public void run() {

            customSquareView.draw(canvas);
            //customSquareView.invalidate();

            handler.postDelayed(this, 1000);

        }
    });

}

}

启动“活动”时,如何使该正方形围绕其中心连续每秒旋转一次?

0 个答案:

没有答案