ウィンドウマネージャーにフローティングビューを表示するサービスがあります(WINDOW_TYPE_ALERT権限を使用)。それを表示してアクションを実行できます。しかし、具体的な質問が 2 つあります。
- フローティングビューの実装について
- ビューを閉じることができるように、システムの戻るボタン イベントをリッスンする方法。
実装:
マニフェストで、次の権限を追加しました。
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
アラーム イベントをリッスンするブロードキャスト レシーバーがあります。イベントを受けて、フローティングビューを表示するサービスを開始しています。以下は、ビューを作成するために使用しているコードです。
LayoutParams layOutParams = new WindowManager.LayoutParams(
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSLUCENT);
ユーザーがビューに対して何らかのアクションを実行するたびに、ウィンドウ マネージャーからビューを削除し、サービスを停止しています。
私が知りたいのは、これが問題にアプローチする正しい方法であるか、それともより良い方法があるかということです。また、LayoutParams を変更する必要がありますか、それともそのままにしておく必要がありますか?
次に、SYSTEM BACK/HARDWARE BACK ボタンを押すイベントが発生したときに、このフローティング ビューを閉じたいと思います。これを行う方法についての指針は役に立ちます。
理解を深めるために、フローティング ビューのスクリーンショットを添付します。