Activityを透過する


Androidでは、Activityの背景を透明にすることで、透明な画面を作成することが可能です。

画面を透明にすることで、ダイアログのみ表示されているかのような画面や、まるで画面遷移していないかのように振る舞うことができます。

それでは続きをどうぞ


Activityを透明にする
では早速、Activityを透明にしてみましょう。

サンプルコードはこちらをご覧ください。

AndroidManifest.xmlを開き、透明にしたいActivityのtheme属性に、次のように定義します。

android:theme="@android:style/Theme.Translucent"

追加する位置は<activity>タグ内ですのでご注意下さい。
Theme.Translucentは、Activiyを透明にするために、デフォルトでAndroidにパッケージされているテーマです。
ですので、アプリ内で改めて自分でstyleとして定義しておく必要はありません。
以下が透明なActivityを表示したキャプチャ画像です。何も表示されていないようですが、よく見ると画面上部に「Hello World TranslucentActivity」とアプリタイトル表示されており、Activity が一枚表示されているのがわかります。

以上で、Activityの背景を透明にする、は完了です。

Activityを半透明にする

次に、Activityを半透明にしてみます。こちらは、先ほどのTheme.Translucentを継承し、カスタマイズします。
カスタマイズと言っても難しくはありません。valuesフォルダ配下styles.xmlファイルを作成します。


styles.xmlファイルの中身を以下のように記述し、Theme.MyTransという独自のテーマを作成してみます。

<?xml version="1.0" encoding="utf-8"?>
<resources>
	<drawable name="translucent_background">#44FF0000</drawable>
	<style name="Theme.MyTrans" parent="android:style/Theme.Translucent">
		<item name="android:windowBackground">@drawable/translucent_background</item>
	</style>
</resources>

<style>タグにて、parentTheme.Translucentを定義することで、デフォルトで定義されているテーマを継承しています。<drawable>タグには背景色を定義し、定義した背景色を、<style>タグ内に定義した<item>タグ内で参照しています。

あと、忘れずにAndroidManifest.xmファイルの定義の方で、作成したTheme.MyTransを定義します。


android:theme="@style/Theme.MyTrans"

これで、以下のキャプチャ画像のような、うっすらと赤色の背景色を持った半透明なThemeができあがります。

背景を透明にしつつ、画像を表示させることもできます。
こちらも非常に簡単で、先ほどのソースコードの<item>タグにて、表示させたい画像を参照するだけです。

<style name="Theme.MyTransPict" parent="android:style/Theme.Translucent">
	<item name="android:windowBackground">@drawable/<画像リソース></item>
</style>

画像リソースは、あらかじめリソースフォルダ(res/drawable)に格納しておきます。

余談ですが、「設定画面を簡単に作る」の方でPreferenceActivityをご説明しましたが、PreferenceActivityも、同様のやり方で透明にすることが可能です。