内容
这次里面介绍的是自定义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是保存好旋转的角度问题。