我知道我可以查看源代码,但我想知道是否有android.graphics.Picture.writeToStream(OutputStream)
使用的格式的任何文档。
您可以查看SkPictureRecord.cpp。看起来,绘制函数的细节通过以下方法简单地线性序列化:
void addScalar(SkScalar scalar) {
fWriter.writeScalar(scalar);
}
在任何情况下,与大多数SDK的私有细节一样,利用这些知识可能会在SDK更改时给您带来麻烦。
我想猜和这里所有这些"skp"文件的格式是一样的:
http://skia.googlecode.com/svn/skp/你可以打开Skia调试器,它包含在Skia中(如果你能让它编译!)。
话虽如此,当我试图为我的测试视图打开writeToStream()
的输出时,skia调试器出现了故障。
这是Android代码调用的函数。正如您所看到的,它是有版本的。该目录中的测试文件是版本9。我的Galaxy S2上Canvas.writeToStream()
的输出是版本1。这里是java代码调用到的地方:
http://code.google.com/p/skia/source/browse/trunk/src/core/SkPicture.cpp # 291
但这显然是一个比我手机上的版本新,因为它是版本9:
http://code.google.com/p/skia/source/browse/trunk/include/core/SkPicture.h # 161
使用SkPicture
的不向后兼容的构造函数恢复图片:
http://code.google.com/p/skia/source/browse/trunk/src/core/SkPicture.cpp # 269
这是一个有点遗憾,使它相当黑客使用作为序列化格式,因为你必须嗅嗅PICTURE_VERSION
在Android上,然后做一些奇怪的东西给Android正确的版本。
编辑
PICTURE_VERSION
在ICS中为1,在Jellybean中为2:
https://github.com/android/platform_external_skia/blob/master/include/core/SkUserConfig.h L44
标题>