【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】設定画面の作成
res/xml/preferences.xml <?xml version=&quo
-
【android】オーバーレイでトップレイヤーにViewを表示する
常にホーム画面や他のアプリより前面にViewを表示する方法です。 前面に透明のViewGroupを
-
【android】 Android4.1のserviceでdefaultPreferenceがおかしい
【現象】 ActivityでdefaultPreferencesで保存したデータがservice内
-
【android】アプリのバージョン情報を取得する
int versionCode = -1; String versionName = &quo
-
【android】バイブレーションを使う
必要なファイル MyApp.manifest MyApp.java MyApp.m
-
【android】 webviewでassetsのリソースを使用する
webviewでassets内のリソースにアクセスするには file:///android_a
-
【android】リソースからいろいろ取得する
リソースで定義したいろいろをコード内で呼び出す方法です。 レイアウト //リソースからレ
-
【android】サービスの実装
ダウンロードなどActivityに依存したくない大きなバックグラウンド処理や常駐プロセスを作りたい場
-
【android】リスト項目のmatch_parentが効かない
下記のようなリスト項目用のレイアウトを用意して、リストの右端にチェックボックスを置くようにしたのです
- PREV
- 【android】標準の設定画面を作る
- NEXT
- 【android】バイブレーションを使う