从功能上看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(Canvas canvas) {
Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);
p.setColor(0x88FF0000);
c

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

被折叠的 条评论
为什么被折叠?



