1

在渲染我的动态壁纸时,我有一些条带渐变伪影。这篇文章完美地解释了这背后的原因:为了消除大部分并提高效率,我可以在 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。或者有吗?

PS当然我知道我可以做上面文章中描述的其他事情,比如应用抖动等,所以请不要费心指点我。我想找到我问的问题的答案:)

4

1 回答 1

1

在 onCreate() 中设置 PixelFormat

holder.setFormat(PixelFormat.RGBA_8888);
于 2012-05-02T11:32:12.577 回答