是否可以使用32位(ARGB_8888)表面格式的动态壁纸?

时间:2012-05-02 11:01:59

标签: android surfaceview live-wallpaper artifacts dithering

渲染我的动态壁纸时,我有一些条纹渐变文物。 This article完美地解释了这背后的原因:为了消除大部分内容并提高效率,我可以在32位位图上绘制32位位图:)

所以我问自己一个问题:如何为动态壁纸做这个?并没有找到答案:) 在动态壁纸中,我们有一个由android框架为我们创建的表面。它发生在RGB_565表面,因为:

// code inside my WallpaperService.Engine subclass
public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height)
{
   Log.d("test", "format is: "+format); // => prints 4, which is PixelFormat.RGB_565
}

似乎我无法让Android框架将其更改为ARGB_8888。或者有吗?

P.S。当然我知道我可以做上面文章中描述的其他内容,比如应用抖动等,所以请不要打扰我。我想找到一个与我问的答案完全相符的答案:)

1 个答案:

答案 0 :(得分:1)

在onCreate()

中设置PixelFormat
holder.setFormat(PixelFormat.RGBA_8888);