[Android] 背景が半透明の Activity を作る

背景を半透明にしてクールなダイアログ風のActivityを作れます。

下はボタンをタップして新しい半透明背景のActivityに画面遷移した例
 
1x1.trans - [Android] 背景が半透明の Activity を作る


Android Studio
2021.2.1

 




Theme の設定

 

Activiyの半透明は、例えばレイアウトファイルで

のように黒の半透明を設定しても灰色の背景色になるだけです。

これを半透明にするには、半透明のThemeを作って紐づけすることで可能です。

(Android Studio のファイル構成が変わって res\values\ 以下にあった styles.xml がなくなり代わりに Theme.xml になりました。)

新しく Them.TranslucentBackground のようなTheme名を作り、以下のようにstyleを追加し
item として透明背景の @android:color/transparent を設定します。

Theme.xml

 
このテーマではActionBarを消したいので親ThemeをNoActionBarのものにしています
parent=”Theme.MaterialComponents.DayNight.NoActionBar”

これだけだと完全に背景が透明になってしまうので、半透明にするために
Activityのレイアウトで先ほどのバックグラウンドのカラー設定をします。

 
「7f」 の箇所がアルファ値になるので、ここを変えて透明度の調整ができ、それに続くカラー値で色合いの調整も可能です

 

また、このThemeを新しいActivityのThemeとしてAndroidManifest.xmlに設定が必要です。

 

 

サンプルコード

 

まとめてみると
 
res/values/Theme.xml

 
画面遷移した先のActivityにこのThemeを設定します。
AndroidManifest.xml

 

MainActivity.java
ここではボタンを設定して画面遷移するだけです

 
遷移先のActivityです
TranslucentActivity.java

 
レイアウトのactivity_main.xmlでは画像表示とボタンです
activity_main.xml

 
遷移先のレイアウトは画面の中央に画像を表示します
activity_translucent.xml

 
strings.xml

 

サンプル動画

 

Activityを使ったダイアログ風のスクリーンが作れました。
 

 

Fragmentの半透明背景

 

Activityは面倒な作業が必要でしたがFragmentはどうでしょうか
本来Activityに重ねることを前提にしているのか簡単にできます。

Fragmentのレイアウトを先にActivityで試した

を設定すると半透明のFragmentができます。

どうしてもActivityでの遷移が必要でない場合はFragmentでいいということでしょうか、今更ですが

 
 
 
Ref:
スタイルとテーマ | Android Developers

シェアする

  • このエントリーをはてなブックマークに追加

フォローする