【发布时间】:2013-06-23 01:08:17
【问题描述】:
我有一个自定义视图,通常我使用 .png 文件在画布上进行绘制,效果很好,但现在我的要求是使用 .gif 文件,由于某种原因,相同的代码将无法正常工作。 .gif 文件是否有一些特定的东西不允许 android 画布对象在由它们制作的位图上绘制?
【问题讨论】:
我有一个自定义视图,通常我使用 .png 文件在画布上进行绘制,效果很好,但现在我的要求是使用 .gif 文件,由于某种原因,相同的代码将无法正常工作。 .gif 文件是否有一些特定的东西不允许 android 画布对象在由它们制作的位图上绘制?
【问题讨论】:
显然,您不能在从 .gif 文件创建的画布上绘图。一旦我能够将 .gif 转换为 .png,我就可以再次在画布上绘图。
【讨论】:
其实我可以在画布上画GIF文件,但是所有透明的颜色都变成了白色!我认为这只是一个错误,与 Bitfactory.Options 中的新参数 inPremultiplied 有关,可能没有正确测试。
我对此感到非常沮丧,因为现在我必须在我以前的所有应用程序中用 PNG 替换 GIF。 (下个版本修复这个bug没有任何区别,因为还是有模型,不支持GIF透明。)
GIF 文件确实有它自己的优势。它不支持 alpha 或真彩色,但它具有透明索引,这在许多情况下是实际需要的。如果您希望 PNG 文件的大小非常重要 大于 GIF(我认为这是使用 GIF 而不是 PNG 的主要原因),请将 PNG 文件从真彩色转换为索引(颜色图)格式(大多数图形编辑器,包括 GIMP 和 Photoshop 都支持),它适用于 KitKat。你仍然会失去大小,但不会超过 1%。
【讨论】: