【android】ホーム画面や他のアプリの前面にViewを表示する。
公開日:
:
最終更新日:2012/06/06
android
WindowManagerのTYPE_SYSTEM_ALERTのレイヤーにViewを表示することで、Activityに依存しないオーバーレイを表示することができます。
View anyView = new View(context); int positionValuel = Gravity.TOP | Gravity.LEFT; showOverlay( anyView, 30, 100, positionValue); //適切なタイミングでViewを取り除く removeViewFromWm(anyView); private void showOverlay(View view, int widthPx, int heightPx, int position){ WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); WindowManager.LayoutParams params = new WindowManager.LayoutParams( widthPx, heightPx, WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, PixelFormat.TRANSLUCENT); params.gravity = position; wm.addView(overLay, params); } //viewを取り除く private void removeViewFromWm(View overLay){ WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); wm.removeView(anyView); }
加えてパーミッションの追加が必要になります。
AndroidManifest.xml
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"></uses-permission>
関連記事
-
【android】リスト項目のmatch_parentが効かない
下記のようなリスト項目用のレイアウトを用意して、リストの右端にチェックボックスを置くようにしたのです
-
【android】リソースからいろいろ取得する
リソースで定義したいろいろをコード内で呼び出す方法です。 レイアウト //リソースからレ
-
【android】処理時間を計測する
パフォーマンスのリファクタリングを行うには処理時間の計測がかかせません。 SDK標準のクラスを使っ
-
【android】stringsリソースにパラメータを埋め込む
●strings.xml %n$x n : 引数に渡す際の順番。n番目の引数。 x
-
【android】オーバーレイでトップレイヤーにViewを表示する
常にホーム画面や他のアプリより前面にViewを表示する方法です。 前面に透明のViewGroupを
-
【android】アプリ内課金を実装する
アプリ内課金のサンプルコードを解析します。 参考URL 公式API Android
-
[android] JSONのパースにかかる時間
リストデータなんかを保存したいというのはよくある要件だと思います。 DBは面倒だしカラム毎に集計す
-
【android】webviewでアプリ内にwebページを読み込む
webviewを使ってandroidアプリ内にwebページを読み込む定型文です。 //vie
-
【android】 Android4.1のserviceでdefaultPreferenceがおかしい
【現象】 ActivityでdefaultPreferencesで保存したデータがservice内
- PREV
- 【android】標準の設定画面を作る
- NEXT
- 【android】バイブレーションを使う