是否可以拥有32位(ARGB_8888)表面格式的动态壁纸



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

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

在 onCreate() 中设置 PixelFormat

holder.setFormat(PixelFormat.RGBA_8888);

最新更新