2013-01-20 3 views
20

私は、スタイルの "android:background"パラメータを使用し、このスタイルにリンクするアプリケーションのテーマを設定することによって、アプリケーションのすべてのアクティビティの背景を設定しました。アクティビティスタイルのwindowBackgroundとbackgroundの違いは何ですか?

すべての項目がうまくいきました。項目のリストを持つダイアログでは、各項目が背景のフルサイズを持つようになりました。

"android:windowBackground"に使用されているパラメータを変更すると、この場合も正常に動作しているようです。

どうしてですか?両者の違いは何ですか?

また、 "android:windowBackground"を@nullに設定すると、written hereは "android:background"と同じスピードブーストを提供しますか?

答えて

23

android:backgroundは、ビューコンポーネントの背景色(正確に描画可能)です。一方、android:windowBackgroundは、ビューが存在するウィンドウ(アクティビティまたはダイアログ)の背景色です。

デフォルトでは、ビューは透過的(つまり背景色なし)なので、視覚的には下にあるウィンドウから色を取り入れているように見えます。

あなたがリンクした記事が、windowBackgroundをヌルに設定し、フルスクリーン表示の背景ではないことを示す例に注目してください。オーバードローを避けるための一般的な方法です。

ただし、あるビューで他のビューを完全に非表示にすると、同じ原則をビューに適用できます。

例:それは実際にそのビューのそれぞれのためにそれを設定した場合、バックグラウンド:gist.github.com/floatingmonkey/5474959

+0

は、なぜ活動/アプリケーションはAndroidを持っていますか?私はその目的を理解していません。あなただけの色ではなく背景としてイメージを設定することもできます。また、記事の混乱を修正しました。 –

+0

任意の有効なandroid:任意の属性を任意のコンポーネントに渡すことができます。そのコンポーネントに適用されない場合は、属性を無視します。 (これは紛らわしいかもしれませんが、そのアンドロイドは下位互換性を保証します)。もちろん、背景やwindowBackgroundの値として、画像、カラー、描画可能なもの(グラデーション、アニメーションも)を渡すことができます。 –

+0

しかし、私はまだアンドロイド上の画像を使用する方法を取得しない:アクティビティの背景/アプリケーションは、アクティビティのバックグラウンドだけでなく、すべてがそれを使用するようになり、なぜそのような奇妙な動作をしています。このテストを試すこともできます:新しいhello world appを作成し、この属性を画像とともに使用するために作成されたテーマを設定します。アクティビティに関する多くのビューでこの背景が使用されるようになります。 –

関連する問題