【发布时间】:2014-01-10 18:52:56
【问题描述】:
有人告诉我调用getWindow().setFormat(PixelFormat.XXXX); 应该将活动中窗口的像素格式设置为XXXX(例如RGBA_8888)。我曾尝试在我的活动的 onCreate 方法中调用getWindow().setFormat(PixelFormat.XXXX);,但无论我使用什么参数,都可以看到我显示的图像的特征没有任何差异。特别是,我正在渲染一些包含细微颜色变化的位图,这些变化已在 android 设备上显示banding。但是,无论我使用什么 PixelFormat,我都不能使条带变得更好或更糟(例如,RGB_332 看起来并不差)。我强烈怀疑getWindow().setFormat(PixelFormat.XXXX); 根本没有任何效果 - 或者某些后续代码正在改变格式,例如当我创建画布时,?还是观点?还是 onResume??
当我在我的开发 PC(32 位图形)上查看位图的 png 时,我可以确认没有条纹。
编辑: 我刚刚添加了一些测试代码来在屏幕上绘制一组细线 (canvas.drawLine(x,y,x2,y2,paint);),其中油漆分别从 0 到 255 进行红绿蓝扫描。结果图片在这里
红色和蓝色似乎有 32 个色带,绿色有 64 个色带……这意味着屏幕格式是红色和蓝色各 5 位,绿色各有 6 位 - 对我来说看起来像“RGB_565”。然后我尝试了 getWindow().setFormat(PixelFormat.RGBA8888);在 onCreate 的早期,它没有任何区别 - 仍然是 32/64 波段。
【问题讨论】:
-
在编译时进行了一些编辑。请将图像放入
/res/raw/并从那里显示。检查这是否是罪魁祸首。另外,this. -
我猜你的意思是 bin/res ? ...如果是这样,我可以确认在我的 PC 上查看时,那里的 png 看起来非常平滑(没有条纹)。
标签: android