2011-12-26 4 views
7

2.3.3 left, ICS on right (emulator). Notice the gradient fade effect difference inside the red box.グラデーション互換性の問題 - 、ICS(4.0.3)エミュレータの右から左のAndroid

ジンジャーブレッド(2.3.3)エミュレータのすべての以前のバージョンよりも少ない色にICSのデフォルト値。赤い枠の中のグラデーションのフェード効果の違いに注目してください(フルサイズの画像を見るには別のウィンドウで開きます)。

MAINVIEW背景:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="@drawable/app_bg" 
android:orientation="vertical" > 

... 

</LinearLayout> 

app_bg.xmlこの問題を引き起こしている何

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle"> 
<gradient android:startColor="#000" android:centerColor="#333" 
    android:endColor="#000" android:angle="270" /> 
</shape> 

?これを修正する方法は、ICSグラデーションが2.3.3バージョンと同じように滑らかに見えるようにすることです。問題はエミュレータでのみ発生しますか?

+0

あなたのホストディスプレイ(つまり、エミュレータが表示されている画面)は32bppですか? –

+0

どういう意味ですか?両方のエミュレータは、スクリーンショットが撮られた時点で同じモニタで動作しています。 –

+0

私の間違いは、2.3画面もエミュレートされていることに気付かなかった。 –

答えて

0

ICS 4.0.3デバイスでの確認:これはエミュレータの問題です。

+1

いいえ、私はギャラクシーノート... – syloc

1

私は問題はアンドロイドが(より右側の)より少ない色を使ってグラデーションを描いていることだと思います。私はあなたが色深度の低下を隠すのを助けるディザリングを有効にしたいと思う。この回答を見るかもしれないlink

私はそれがどのように動作するかは完全にはわかりませんが、デバイスが24ビットカラーをサポートしていてもアンドロイドはデフォルトでRGB_565モードになることがあります。

+0

はい、グラデーションを正しく描くために必要な数よりも少ない数の色にデフォルト設定することがいくつかあります。しかし、それがICS上で起こる理由と、それを変更する方法 - 私は全く知らないし、解決策も見つけていない。答えを知っている人がここに投稿してくれることを願っています... 'window.setFormat(PixelFormat.RGBA_8888);背景を描画しているアクティビティの 'onAttachedToWindow()'の ' 'は問題を解決していません。 –

0

PixelFormat.RGBA_8888を使用しても役に立たないというご意見をいただきました。
ディザフラグを追加することもできます:window.addFlags(WindowManager.LayoutParams.FLAG_DITHER);
あなたはここにディザリングや色についての私の以前の関連の回答を見ることができます:ハードウェアアクセラレーションがアプリケーションで有効になっている場合
Awful background image quality in Android

+1

私の 'onCreate'メソッドに' getWindow().setFormat(PixelFormat.RGBA_8888);と 'getWindow()。addFlags(WindowManager.LayoutParams.FLAG_DITHER);を追加しましたが、もしそれが 'super.onCreate(savedInstanceState);'の前でも後でもあれば、それは問題です。 –

+1

非常に奇妙なことに、#000の代わりに#FF000000というグラデーションカラーを設定すると、エンジンがドロアブルをあまりにも最適化すると、問題が発生すると思いますICSの不具合。 – Jave

+0

6文字のカラーコードと8文字のカラーコード(FFとしてのアルファ)を​​試しましたが、グラデーションは90年代のように見えます –

1

ICSは自動にグラデーション効果を追加します。 すべてのアプリケーションのハードウェアアクセラレーションを強制することも可能ですが、一部のアプリケーションでは黒ではなくグラデーションの背景が表示されます。