gpt4 book ai didi

android - ICS 上的位图以错误的像素格式加载

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:44:45 24 4
gpt4 key购买 nike

我遇到了以下问题。当 Ice Cream Sandwich 上运行的应用程序从资源加载任何位图时,它可能会被错误地呈现,就好像它已被解码为与当前窗口格式不同的格式,没有应用抖动。但是,解码格式和窗口格式都已明确设置:

BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inPreferredConfig = Bitmap.Config.RGBA_8888;

getWindow().setFormat(PixelFormat.RGBA_8888);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER);

以下是 test app 的屏幕截图取自 this article在带有 ICS 4.0.3 的模拟器上运行(它在 HTC HD2 上给出相同的结果):

RGBA_8888 (32-bits) 窗口格式,各种位图解码格式: 32-bit window format

RGB_565(16位)窗口格式,各种位图解码格式: 16-bit window format

可以注意到几件事:

  • 不时考虑抖动标志;
  • ICS 的默认窗口格式似乎是 RGB_565
  • 唯一好看的渐变出现在 RGB_565 窗口格式RGBA_8888 位图解码格式

这个问题在这些问题中也有反射(reflect),但仍然没有找到解决方案:

Gradient compatibility issue - ICS defaults to fewer colors than all the previous versions of Android

Awful background image quality in Android

问题是,如何在 ICS 上处理所有这些格式,更准确地说,如何使 ICS 加载具有 RGBA_8888 格式的位图以及如何将窗口格式设置为 RGBA_8888 所以这些位图显示正确?

最佳答案

我可以肯定地向您保证,默认的窗口格式是 RGB888。这实际上是 Android 2.3 中的默认设置,此后一直没有更改。在这一点上,我会考虑弃用 RGB565 窗口,因为基本上所有当前设备都有 32bpp 显示器。

你说你也在 HTC HD2 上运行它,但由于没有官方版本,我会怀疑你得到的任何结果。

我认为模拟器可能仍会使用 16bpp 显示器,因此在这方面我不会依赖它的结果来完全匹配您通常在设备上看到的内容。

关于android - ICS 上的位图以错误的像素格式加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9097887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com