2011-01-13 3 views
2

細かいフェードシャドウを持つ透明なPNG画像を使用すると、常にAndroid画面の影の周りにエッジ線があります。 emualatorやExclipseではこれを表示しません。写真を見る。Android上の透明なPNGのレンダリングシャドウの品質

これを改善する方法があるのだろうかと思います。これは、すべての24ビットカラーを表示するためのAndroidスクリーンの不能、または画像のスケーリングと再サンプリングの事実と関係していますか?

この例では、イメージはImageButtonビューに読み込まれます。ソースやバックグラウンドとして試してみましたが、それは同じ品質です。

alt text

答えて

11

あなたが見ているアーティファクトは「バンディング」として知られており、それがピクセルあたり16ビットであること、あなたのディスプレイの結果です。

これを解決する最善の方法は、PhotoshopまたはPaint.NETの画像アセットに「ノイズ」を加えることです。

また、アクティビティのonCreate()に、super.onCreate()setContentView()の間に次の行を追加して、ウィンドウを32bppに設定することもできます。 :

getWindow().setFormat(PixelFormat.RGBA_8888); 
+0

ありがとうございます。 getWindow()。setFormat(PixelFormat.RGBA_8888);動作します! Photoshopで「ノイズ」を追加することはどういう意味ですか?上の画像/ボタンはシャドウ効果としてぼかしを使用しています。 – Lumis

+0

@Reuben:興味深いことに、このトリックを知らなかった。私はバンディングに関する問題を抱えていましたが、この 'setFormat'メソッドを使うことには何らかの欠点がありますか? – kcoppock

+2

欠点は、ウィンドウが2倍のRAMを必要とし、レンダリングがアクセスされるメモリの2倍の結果として、より遅い(特にソフトウェアレンダリング)ことがあるということです。 –

関連する問題