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
}

そして、これを ARGB_8888 に変更するよう Android フレームワークに要求する方法はないようです。それともありますか?

PS もちろん、ディザリングの適用など、上記の記事で説明されている他のことを実行できることはわかっているので、わざわざ私に指摘しないでください。私が尋ねた質問に対する正確な答えを見つけたいです:)

4

1 に答える 1

1

onCreate() 内に PixelFormat を設定します

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