内容

这次里面介绍的是自定义View的一些使用,甚至可以说是canvas的使用

public class RotatingRect extends View {

	public RotatingRect(Context context, AttributeSet attrs, int defStyleAttr) {
		super(context, attrs, defStyleAttr);
		initProperties();
	}

	public RotatingRect(Context context) {
		super(context);
		initProperties();
	}

	public RotatingRect(Context context, AttributeSet attrs) {
		super(context, attrs);
		initProperties();
	}
	private void initProperties(){
		paint = new Paint();
		paint.setColor(Color.RED);
	}
	@Override
	public void draw(Canvas canvas) {
		// TODO Auto-generated method stub
		super.draw(canvas);
		canvas.save();
		canvas.rotate(degree,50,50);
		canvas.drawRect(0, 0, 100, 100, paint);
		canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher), 25, 0, paint);
		canvas.restore();
		degree++;
		invalidate();
		
	}
	private Paint paint;
	private float degree = 0;
}

效果图:

从效果图上分析,似乎这是一个动画的效果。但其实际是一个view视图,只不过是每次重新刷新视图View(重新绘制)invalidate()
一开始使用的时候首先要保存好canvas的状态信息,然后重新绘制视图信息。degree是保存好旋转的角度问题。