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>タグにて、parentにTheme.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も、同様のやり方で透明にすることが可能です。