• スポンサードリンク

透明アクティビティは自動回転出来ないの?

Android

とりあえず結論だぁ〜(ToT)/
透明Activityは自動回転出来ません(´・ω・`)
setRequestedOrientationは動作するので、自前でセンサーから端末の向きを拾って回転させるしかないみたいです(面倒だけど)。

透明Activity(背景透過)

AndroidのActivityを透明にする方法はいくつか有るようです。
例えば、こんな透明テーマを作ってAndroidManifest.xmlでApplicationまたはActivityのテーマに割り当てるとActivityが透明になってホームスクリーンや下にある別のActivityなんかが透けて見える様になります。

自前で作ったテーマの代わりに、

とかでもOK。アプリ内のActivity全部を透明にしたいならApplicationタグ内でandroid:themeへ割り当てて、特定のActivityだけを透明にしたい場合は、そのActivityのタグ内でandroid:themeへ割り当てます。
でもこうやって背景を透過させたActivityは自動回転出来ません。ガ━━(;゚Д゚)━━ン!!
いや、Activity自体は回転せんでもいいけど、Activityの中に入れてるFragmentは回転させたいよ〜(;_;)
AndroidManifest.xmlのタグにandroid:configChangesを設定しても、

を呼んでもらえませんし、そもそも、android:configChangesの設定に関係なく呼び出される
public void Application#onConfigurationChanged(Configuration newConfig)
自体が呼び出してもらえません。
当然のようにFragment#onConfigurationChangedも呼び出してもらえません(Fragment#onConfigurationChangedはApplication#onConfigurationChangedから呼び出されているので)
せめてAppication#onConfigurationChangedだけでも呼んでもらえたら良いのに(T_T)

Activityの背景色を指定するには、

  • Activityのレイアウトファイルでandroid:backgroundにカラーリソースを割り当てる
  • getWindow().setBackgroundDrawable(new ColorDrawable(カラーリソース))を呼び出す
  • getWindow().setBackgroundDrawableResource(カラーリソース)を呼び出す

などなど沢山あるのですが、残念ながらこれらの方法ではActivityを透過に出来ません。いえ正確には、Activity自体は透過に設定できるのですが、背景となるホームスクリーンや下にある別のActivity/アプリ等が描画されていないようです。現在のアプリより下にある内容を表示させるにはandroid:windowIsTranslucentを設定するしかないみたいです。
あぁ〜どうしよう(-_-;)オチがないm(_ _)m

もう少し粘ってみた

だめだろうなぁと思いつつActivityは透過させずに、Fragmentを生成する時に透明のカスタムテーマを割り当ててみました。
Activityやアプリ自体とは別のテーマをFragmentに割り当てるにはFragment#onCreateViewで細工をする必要があるようです。
通常のFragmentであればこんな感じ。

これをこんな感じに変えると、そのフラグメントに対してカスタムテーマを割り当てることが出来ます。

やっぱり駄目でした〜(´・ω・`)回転は普通にできるけどActivityは透過できません。

起動時にホームスクリーンのスクリーンショットを取ってそれをActivityの背景に割り当てるとか、センサーから端末の向きを拾って自前で回転させるとか誤魔化す方法はいくつか思いつくものの根本的には無理そうです。ということで、オチの付く見込みが無いので今回はここまで。
お疲れ様でした〜(^_^)/~

« »

  • スポンサードリンク

%d人のブロガーが「いいね」をつけました。