我知道我可以查看来源,但我想知道是否有android.graphics.Picture.writeToStream(OutputStream)
使用的格式的任何文档。
答案 0 :(得分:2)
您可以查看SkPictureRecord.cpp。看起来绘图函数的细节只是通过以下方法线性序列化:
void addScalar(SkScalar scalar) {
fWriter.writeScalar(scalar);
}
在任何情况下,与SDK的大多数私人详细信息一样,利用这些知识可能会在SDK更改时遇到麻烦。
答案 1 :(得分:2)
我会猜测它与所有这些“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
这有点令人遗憾,并且因为你必须在Android上嗅探PICTURE_VERSION
然后做一些时髦的东西来给Android提供正确的版本,因此使用它作为序列化格式非常容易。
PICTURE_VERSION
是1,包括ICS,在Jellybean中是2:
https://github.com/android/platform_external_skia/blob/master/include/core/SkUserConfig.h#L44