Android ApiDemos示例解析(72):Graphics->Pictures

这篇博客探讨了Android中的Picture与Bitmap的区别,重点在于Picture如何记录Canvas上的绘图操作并能存储到Stream中。文章指出Picture由于不存储像素结果,其存储大小远小于Bitmap。此外,Android文档提到Picture在回放绘图到屏幕时速度优于直接绘制。示例展示了如何使用beginRecording创建Canvas,绘制粉色圆和文字,并通过不同方式显示和恢复Picture,包括缩放和转换为PictureDrawable。
摘要由CSDN通过智能技术生成

从功能上看android.graphics.Picture 和 android.graphics.Bitmap 非常像。 Picture可以记录在Canvas上每个绘制操作(通过beginRecording返回的Canvas),然后回放每个绘图操作。同时也支持将Picture中的内容写到Stream中,并支持从Stream恢复Picture。这些功能使用Bitmap也能实现。但Picture 只是记录绘图操作而不是绘制后的像素结果,因此存储大小比同样大小的Bitmap要小得多,本例Picture写到Stream的大小为385个字节。而对于的绘图区域为200X100,如以RGB888格式则需要80000字节。没有仔细研究Picture的内部格式,举个类似的例子,Picture可能存储类似SVG的指令(绘图操作)而非渲染之后的结果。

除了存储空间小之外,根据Android文档,使用Picture存取绘图操作然后回放到屏幕的操作比直接再使用同样的绘图操作在屏幕上渲染的速度要快的多。

从Picture获取可以绘图用的Canvas的方法为

public CanvasbeginRecording(int width, int height)

其中width, height 指定了Canvas的宽度和长度。

本例创建一个Picture对象,并在其上记录一个粉色圆和”Picture”文字。

mPicture = new Picture();
drawSomething(mPicture.beginRecording(200, 100));
mPicture.endRecording();
 
 ...
 
static void drawSomething(Can
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值