2016-10-04 6 views
2

を私はオーバーレイビュー(のLinearLayoutを)持っているは、以下でWindowManagerに追加設定のparams:がオーバーレイウィンドウからボタンを押して戻って実行 - アンドロイド

private void setWindowParams(WindowManager.LayoutParams params) { 
    params.height = WindowManager.LayoutParams.WRAP_CONTENT; 
    params.width = WindowManager.LayoutParams.WRAP_CONTENT; 
    params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR; 
    params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE 
     | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH 
     | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL; 
    params.format = PixelFormat.TRANSLUCENT; 
    params.gravity = Gravity.CENTER; 
} 

これのLinearLayoutは三つのボタン「HOME」、「更新ムービー」が含まれて、 "BACK"

私はonKeyEvent()を実装して、電話の戻るボタンが押されたときにウィンドウマネージャからこのオーバーレイビューを削除しました。

オーバーレイレイアウトから戻るボタンを押すと、アクセシビリティサービスが呼び出され、正常に動作します。今すぐ私の電話の戻るボタンを押すと、私のオーバーレイビューはそのままです。 WindowManager.LayoutParams.FLAG_NOT_FOCUSABLEこのフラグはparamsに設定されているので、キーイベントを受信して​​いないためです。

しかし、私はこのフラグを設定しなかったとき、オーバーレイから戻るボタンを押すだけで、その下のアクティビティを実行するのではなく、オーバーレイ自体を隠すだけです。

携帯電話の戻るボタンを押してオーバーレイを非表示にします。また、私のオーバーレイから戻るボタンを押して戻るボタン機能を実行する。

performGlobalAction(MyAccessibilityService.ACTION_BACK)を使用して実際のボタンプレスとソフトウェアトリガーボタンプレスを区別する方法はありますか? これを正しく実装する方法に関する提案はありますか?

答えて

0

あなたは活動が殺されたときにダイアログのコンテキストが破棄されますので、あなたがウル応答のための WindowManager

+0

感謝を使用できることを行うことはできません。私は第二のアプローチとして私の質問でそれを言いました。それでも完全には機能しませんでした –

+0

このダイアログを削除するには、[removeview](https://developer.android.com/reference/android/view/ViewManager.html#removeView(android.view.View))を使用してください。 – user2423314

+0

Hope I '私の質問ではっきりしています。私はremoveView()を使用して知っていたウィンドウから削除されます。しかし、ちょうど私のオーバーレイの戻るボタンに影響を与えずにシステムの戻るボタンが押されたときにそれを呼び出す方法を知りたい –

関連する問題