先看如下代码
public class SaveRestoreActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new SaveRestoreView(this));
}
}
public class SaveRestoreView extends View {
public SaveRestoreView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint bgPaint = new Paint();
bgPaint.setColor(Color.RED);
int px = 100;
int py = 100;
canvas.drawRect(0, 0, px, py, bgPaint);
// canvas.save();
canvas.rotate(45);
canvas.drawRect(px, py, px + 100, py + 100, bgPaint);
// canvas.restore();
canvas.drawRect(px + 100, py + 100, px + 200, py + 200, bgPaint);
}
}
画一个矩形,然后将坐标系转动45度,再画一个矩形.发现矩形旋转了45度.再画一个矩形.矩形仍转动了45度.效果如下图所示:
将注释点的save,resotre打开,效果如下图所示:
save,restore确保对坐标系的改动只发生在save,restore之间的代码.