getHolder().setFormat(PixelFormat.RGBA_888);
Options options = new BitmapFactory.Options();
options.inDither=true;
options.inScaled = true;
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
options.inPurgeable=true;
(使用上述选项创建的位图)
使用上面的代码时,我得到以下结果.........
- 我的平板电脑上没有色带
测试手机上出现明显的色带(三星 Galaxy Ace)
getHolder().setFormat(PixelFormat.RGBA_888); Options options = new BitmapFactory.Options(); options.inDither=true; options.inScaled = true; options.inPreferredConfig = Bitmap.Config.ARGB_565; options.inPurgeable=true;
我的平板电脑上没有色带
- Galaxy Ace 上有明显的色带
结果与上述相同
getHolder().setFormat(PixelFormat.RGB_565); Options options = new BitmapFactory.Options(); options.inDither=true; options.inScaled = true; options.inPreferredConfig = Bitmap.Config.RGB_565; options.inPurgeable=true;
我的平板电脑上的色带
SG Ace 上的色带
getHolder().setFormat(PixelFormat.RGB_565); Options options = new BitmapFactory.Options(); options.inDither=true; options.inScaled = true; options.inPreferredConfig = Bitmap.Config.ARGB_8888; options.inPurgeable=true;
我的平板电脑上的色带
- SG Ace 上的色带
所以,总而言之,只有 PixelFormat.xxxx 部分似乎有任何区别。我的理解是,这是设置支架颜色格式。这将影响绘制的所有内容。(即,一切都将采用这种格式)。
有人可以解释下一行的目的是什么吗?
options.inPreferredConfig = Bitmap.Config.xxxxxxx
这似乎对已绘制的位图没有任何影响。
性能是最重要的,所以我可能必须更改我的原始 png 文件,使它们没有渐变,(即,将它们绘制为 RGB565 - 这是可取的还是我应该坚持使用 8888?)还是应该抖动解决?(因为如您所见,我启用了它,但似乎没有帮助)。
知道为什么 Ace 上总是有条带吗?会不会是硬件限制?
谢谢这一切都非常令人困惑。
(PS 我已经阅读了官方指南,在向 SO 发布问题以及查看其他相关的 SO 问题之前,我总是会查看该指南,但是官方指南(通常是这种情况)并没有明确这一点我和我无法通过其他问题找到答案,所以如果它已经在这里道歉)。