android canvas 简书,31_Android Canvas 类简单介绍

我们在自定义 View 的时候,经常会重写 onDraw() 方法来绘制自己想要的效果。下面会介绍该方法中一个重要的类 Canvas 类的一些操作方法。

绘制各种内容

// 文字

canvas.drawText("开始写字了!",50, 50, mPaint);

// 圆形

canvas.drawCircle(200, 200, 100, mPaint);

// 线条

canvas.drawLine(100, 100, 300, 300, mPaint);

// 椭圆

RectF oval = new RectF(150, 200, 500, 400);

canvas.drawOval(oval, mPaint);

// 矩形

canvas.drawRect(100,100, 200, 200, mPaint);

// 圆角矩形

RectF oval3 = new RectF(80, 260, 200, 300);

canvas.drawRoundRect(oval3, 20, 5, mPaint);

// 点

// 一个点

canvas.drawPoint(60, 390, mPaint);

// 多个点

canvas.drawPoints(new float[]{60,400,65,400,70,400}, mPaint);

// 图片

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);

canvas.drawBitmap(bitmap, 200,300, mPaint);

旋转、平移、缩放操作

// 平移

canvas.translate(100, 50);

//缩放

// 初始原点

canvas.scale(2, 4);

// 可变原点

canvas.scale(2, 4,100,100);

// 旋转

// 默认以原点为中心进行旋转

canvas.rotate(30);

// 自定义中心进行旋转

canvas.rotate(30,100,100);

Canvas 状态保存和还原

Canvas 提供了几个方法,让我们可以方便的对 Canvas 的状态进行更改和还原。

我们在对 Canvas 进行平移、旋转、放大等操作时候,可以调用 save() 方法,将当前修改过的 Canvas 状态进行保存,调用 restore() 方法后,会将 Canvas 还原成最近的一个 save() 的状态。

save() 方法还会有一个返回值,我们也可以调用 restoreToCount(int saveCount) 方法,将这个返回值作为参数传递进去,就可以将 Canvas 还原成某一个特定的 save() 状态。

canvas.translate(100,100); // 平移(100,100)

int save1 = canvas.save(); // 保存Canvas状态(状态1)

canvas.scale(2, 2); // 放大2倍

int save2 = canvas.save(); // 保存Canvas状态(状态2)

canvas.restore(); // 返回最新的save状态,即状态2

canvas.restoreToCount(save1);// 手动指定的返回到 状态1

参考文章:

Android Canvas 方法总结

本文章只是作为自己学习和总结所用,如有使用不当之处可随时@我,谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值