有人告诉我,调用getWindow().setFormat(PixelFormat.XXXX);应该将活动中窗口的像素格式设置为XXXX (例如,RGBA_8888)。我尝试在我的活动的getWindow().setFormat(PixelFormat.XXXX);方法中调用onCreate,但是无论我使用什么参数,显示的图像的特征都没有区别。特别是,我正在绘制一些位图,其中包含了一些在安卓设备上显示分带的细微的颜色变化。但是,无论我使用什么PixelFormat,我都不能使显带更好或更糟(例如,RGB_332看起来没有更糟)。我强烈怀疑getWindow().setFormat(PixelFormat.XXXX);根本没有任何效果-或者后来的一些代码正在改变格式,例如,当我创建一个画布时?还是看风景?还是在onResume上??
我可以确认,当我在我的开发PC上查看位图的png (32位图形)时,没有分带。
编辑:,我刚刚添加了一些测试代码,在屏幕上绘制一组细线条(canvas.drawLine(x,y,x2,y2,paint);),其中涂料分别有红色、绿色和蓝色扫描,从0到255。得到的图像就在这里

红色和蓝色有32条颜色,绿色有64条.这意味着屏幕格式为红色和蓝色各为5位,绿色为6位--在我看来就像是"RGB_565“。然后我尝试了getWindow().setFormat(PixelFormat.RGBA8888);在onCreate早期,它没有什么区别--仍然是32/64波段。
发布于 2014-01-12 13:06:16
我有电话
final SurfaceHolder holder = getHolder();在我的密码里。然后我把这个换成
final SurfaceHolder holder = getHolder();
holder.setFormat(PixelFormat.RGBA_8888);从那时起,一切都运行得很好(一点也不带)。
发布于 2015-02-10 11:24:38
尝试将其添加到您的AndroidManifest.xml中以避免默认的RGB_565:
<supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" />https://stackoverflow.com/questions/21052146
复制相似问题