在安卓中把canvas当成是一块画布,我们可以再画布上画我们想要的内容,当然除了在画布上绘制之外,还需要设置一些关于画布的属性,比如:颜色、尺寸等等。下面我们来分析一下Android中的canvas有哪些功能。
Canvas():创建一个空的画布,可以使用setBitmap()方法来是设置绘制的具体画布;
Canvas(Bitmap bitmap):以bitmap对象创建一个空的画布,则将内容那个绘制到bitmap上,因此bitmap不能为null;
Canvas(GL gl):在绘制3D效果时使用,与OpenGL相关;
drawColor:设置canvas的背景颜色
setBitm:设置具体画布
clipRect:设置显示区域,即是剪裁区
isOpaque:检测是否支持透明
rotate:旋转画布
setViewPort:设置画布中显示窗口
skew:设置偏移量
在Android中,我们可能需要对某个精灵进行旋转、缩放等其他操作,我们可以用过旋转画布来实现,但是旋转画布时,会旋转画布上的所有对象,而我们只需要旋转其中一个,这时就需要用到save方法锁定需要操作的对象,在操作完成之后可以通过restore方法解锁,请看下面的实例:
视图类用于绘制并刷新界面:
public class GameView extends View implements Runnable{
private Paint paint = null;
String TAG = "MainActivity";
public GameView(Context context){
super(context);
paint = new Paint();
new Thread(this).start();
}
public void onDraw(Canvas canvas){
//设置画布的颜色
canvas.drawColor(Color.BLACK);
//设置取消锯齿效果
paint.setAntiAlias(true);
//设置剪裁区
canvas.clipRect(10,10,280,260);
canvas.save();
canvas.rotate(5);
paint.setColor(Color.RED);
canvas.drawRect(15, 15,200,200,paint);
canvas.restore();
paint.setColor(Color.BLUE);
canvas.drawRect(150,150,200,200,paint);
Log.e(TAG,String.valueOf(i));
super.onDraw(canvas);
}
public void run(){
while(true){
try{
Thread.sleep(100);
}catch(InterruptedException e){ }
//使用postInvalidate可以直接在线程中更新界面
postInvalidate();
}
}
}
下面把当前的视图类对象设置为需要显示的界面就行了