1、了解SurfaceView 与View的区别
2、SurfaceView实践
绘制多个图形
1)创建工程SurfaceViewLearn
new一个类MyView.java
MainActivity.java
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MyView(this));
}
}
MyView.java
package com.keen.surfaceviewlearn;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class MyView extends SurfaceView implements SurfaceHolder.Callback {
private Paint paint = null;//声明画笔
public MyView(Context context) {
super(context);
paint = new Paint();
paint.setColor(Color.RED);//设置画笔颜色
getHolder().addCallback(this);
}
//绘制方法
public void draw() {
Canvas canvas = getHolder().lockCanvas();//锁定画布
canvas.drawColor(0xFFFFFFFF);
canvas.save();//保存 可编辑状态
canvas.rotate(90, getWidth()/2, getHeight()/2);//修改
//绘制方块
// canvas.drawRect(0, getHeight()/2, getWidth(), getHeight(), paint);
// canvas.drawRect(0, getHeight()/2+100, getWidth(), getHeight()+100, paint);
//绘制直线
canvas.drawLine(0, getHeight()/2, getWidth(), getHeight(), paint);
canvas.restore();//复原 配合save()使用
canvas.drawLine(0, getHeight()/2+100, getWidth(), getHeight()+100, paint);
getHolder().unlockCanvasAndPost(canvas);//解锁画布
}
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
draw();
}
@Override
public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {
}
@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
}
}
垂直
平行
2)绘制组合图形
canvas n.帆布、油画(布) v.用帆布覆盖 a.帆布制的