Android Canvas 的使用

来源:互联网 发布:linux查看hca卡 编辑:程序博客网 时间:2024/06/05 09:31

由于对UI多种多样的需求,单纯的android给定的控件已经无法满足我们。这个时候我们就需要去自定义控件。就会用到Canvas画布。

在Canvas上,我们想画什么就画什么。

一个简单棋盘格的示例:


首先要创建一个类来继承自View来实现画布;

复写类的Ondraw方法,所有的绘制都在Ondraw里完成;

初始化一个Paint 画笔,来对画布进行绘制。

public class GameView extends View {    private int startX = 0;    private int startY = 0;    private int GRID_NUM;    private int GRID_WIDTH;    private Paint paint = null;    public GameView(Context context,int number) {        super(context);        GRID_NUM = number;        paint = new Paint();//实例化一个画笔        paint.setAntiAlias(true);//设置画笔去锯齿,没有此语句,画的线或图片周围不圆滑    }    public void onDraw(Canvas canvas) {        canvas.drawColor(Color.GREEN);//背景色        paint.setColor(Color.BLUE);//画笔颜色        // 每个格子的宽度        GRID_WIDTH = this.getWidth()/(GRID_NUM-1);        //宽度*各自每行数量=一行格子所占尺寸。屏幕总尺寸-有用尺寸=空白尺寸,空白尺寸/2为每个边所空闲空间        startX = this.getWidth()%(GRID_NUM-1)/2;        startY = startX;        Toast.makeText(getContext(),"各尺寸:"+ GRID_WIDTH+"占用尺寸: " + GRID_NUM*GRID_WIDTH + "总尺寸: " + this.getWidth(),Toast.LENGTH_SHORT).show();        for (int i = 0; i < GRID_NUM; i++) {            canvas.drawLine(startX, startY + i * GRID_WIDTH, startX + (GRID_NUM - 1) * GRID_WIDTH, startY + i * GRID_WIDTH, paint);            canvas.drawLine(startX + i * GRID_WIDTH, startY, startX + i * GRID_WIDTH, startY + (GRID_NUM - 1) * GRID_WIDTH, paint);        }    }}
一个简单的棋盘格绘制就完成了,还可以根据传入的参数来显示不同格子数量的棋盘格


0 0
原创粉丝点击