フォトショップからエクスポートされた、青い輝きのあるBluetoothアイコンを表す透明なPNG画像があります。
HTC Desire では、単純なイメージビューが作成され、PNG がビットマップとして使用されます。画像ビューの周囲の背景が白の場合、ニュアンスに違いがあります。背景が黒の場合、違いは隠されます。
ADB を使用してスクリーン キャプチャを実行すると、問題は見えなくなります。
考えられる原因: 画面は、ビットマップに使用されるものよりも高いビット深度レートを使用しています。例えば。RGB24 対 RGB16。そうすることで、画面はビットマップ エンコーディングで可能なよりも多くの白のニュアンスを持ちます。表示されると、ビットマップのピクセルは新しいビット深度要件に近似されますが、近似値が使用されるため、背景のニュアンスと適切に一致しません。例えば。RGB16->RGB24 は C24 = 255*C16/31 を意味します。
スクリーン キャプチャ ソフトウェアを使用すると、ビット深度はおそらくより狭いビット深度値 (RGB16) にダウンスケールされるため、すべてのニュアンスが融合し、より単純な 16 ビット カラーに近似されます。これが、問題を説明するために写真カメラを使用した理由です。
質問は、これを修正する方法ですか?
私はすでに次のようなパラメータでビットマップをロードしようとしました: resample.inPreferredConfig = Config.ARGB_8888; しかし、役に立たない。
GFX 効果 (シャドウ、グローなど) を含むアイコンなどの透明な画像を表示する必要があるだけです。グレースケール マスクも使用できれば幸いです (黒 => 白のマスクでピクセルの透明度を示しますが、その方法を見つけてください)。
御時間ありがとうございます!