Android 设置像素格式

Android 设置像素格式,android,Android,我被告知调用getWindow().setFormat(PixelFormat.XXXX)应将活动中窗口的像素格式设置为XXXX(例如RGBA_8888)。我尝试调用getWindow().setFormat(PixelFormat.XXXX)在我的活动的onCreate方法中,但无论我使用什么参数,都看不到显示图像的特征有什么不同。我特别渲染了一些位图,这些位图包含了android设备上显示的颜色的细微变化。但无论我使用什么样的像素格式,我都无法使带状效果更好或更差(例如,RGB_332看起来

我被告知调用
getWindow().setFormat(PixelFormat.XXXX)
应将活动中窗口的像素格式设置为XXXX(例如
RGBA_8888
)。我尝试调用
getWindow().setFormat(PixelFormat.XXXX)
在我的活动的onCreate方法中,但无论我使用什么参数,都看不到显示图像的特征有什么不同。我特别渲染了一些位图,这些位图包含了android设备上显示的颜色的细微变化。但无论我使用什么样的像素格式,我都无法使带状效果更好或更差(例如,
RGB_332
看起来没有更差)。我强烈怀疑
getWindow().setFormat(PixelFormat.XXXX)
根本没有任何效果——或者说后来的一些代码正在以某种方式改变格式,例如,当我创建画布时,?还是风景?还是在简历上

final SurfaceHolder holder = getHolder();
我可以确认,当我在我的开发PC(32位图形)上查看位图的png时,没有条带

final SurfaceHolder holder = getHolder();
编辑:我刚刚添加了一些测试代码,以便在屏幕上绘制一组细线(
canvas.drawLine(x,y,x2,y2,paint);
),其中paint分别具有0到255之间的红绿色和蓝色扫描。结果图像在这里

final SurfaceHolder holder = getHolder();

final SurfaceHolder holder = getHolder();

红色和蓝色有32个色带,绿色有64个色带。。。这意味着屏幕格式是红色和蓝色各5位,绿色各6位——在我看来就像“RGB_565”。然后我尝试了getWindow().setFormat(PixelFormat.rgba888);在onCreate早期,它没有什么区别——仍然是32/64条带。

我有这条线

final SurfaceHolder holder = getHolder();
在我的代码中。然后我把这个改成了

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

从那时起,一切都运转良好(完全没有带状)。

尝试将此添加到您的AndroidManifest.xml中,以避免默认的RGB_565:

final SurfaceHolder holder = getHolder();
<supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" />


编译时正在进行一些编辑。请将图像放入
/res/raw/
并从那里显示。检查这是否是罪魁祸首。还有,我猜你指的是垃圾桶/仓库。。。如果是这样的话,我可以确认在我的电脑上查看时,那里的png看起来非常平滑(没有带状)。有点相关:疯狂这仍然不是曲面视图的默认模式。谢谢你指出这一点!!!