android - 设置像素格式

标签 android

有人告诉我,调用 getWindow().setFormat(PixelFormat.XXXX); 应将 Activity 中窗口的像素格式设置为 XXXX(例如 RGBA_8888 )。我尝试在 Activity 的 onCreate 方法中调用 getWindow().setFormat(PixelFormat.XXXX);,但无论我使用什么参数,所显示图像的特征都没有差异。特别是,我正在渲染一些包含颜色细微变化的位图,这些颜色已显示 banding在 Android 设备上。但无论我使用什么 PixelFormat,我都无法使 strip 变得更好或更差(例如 RGB_332 看起来并没有更差)。我强烈怀疑 getWindow().setFormat(PixelFormat.XXXX); 根本没有任何效果 - 或者某些后续代码以某种方式更改格式,例如当我创建 Canvas 时,?或者一个 View ?或者在 onResume 上??

当我在开发 PC(32 位图形)上查看位图的 png 时,我可以确认没有条纹。

编辑:我刚刚添加了一些测试代码来在屏幕上绘制一组细线(canvas.drawLine(x,y,x2,y2,paint);) 其中油漆分别具有从 0 到 255 的红绿蓝扫描。生成的图像在这里

enter image description here

红色和蓝色似乎有 32 个色带,绿色有 64 个色带...这意味着屏幕格式为红色和蓝色各 5 位,绿色为 6 位 - 对我来说看起来像“RGB_565”。然后我尝试了 getWindow().setFormat(PixelFormat.RGBA8888);在 onCreate 的早期,没有什么区别 - 仍然是 32/64 频段。

最佳答案

我有这条线

final SurfaceHolder holder = getHolder();

在我的代码中。然后我将其更改为

final SurfaceHolder holder = getHolder();
holder.setFormat(PixelFormat.RGBA_8888);

从那时起,一切都很顺利(完全没有 strip )。

关于android - 设置像素格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21052146/

相关文章:

Android:向选择器 Intent 添加自定义选项

android - 正常方向移动设备上的视口(viewport)问题

android - Android 上的 Flickr API?

android - 如何在android中的Textview下方添加一行

android - 如何全屏显示 fragment ?

java - 为什么会出现 "java.lang.IllegalArgumentException"错误?

android - 如何在 flutter 中更改 svg 图像的大小?

安卓;从普通 Activity 启动和停止 openGL 动画

java - 缩放位图随机不显示在 ImageView 中

android - 对于 Android Studio 项目,我应该在 Subversion 中忽略哪些文件?