2016-05-24 35 views
0

對不起,長標題。我基本上想添加一個SurfaceView作爲一個窗口出現在所有窗口之上,但不在通知欄上方(即使在拖動時)。我現在的代碼是:Android:在所有應用程序窗口之上放置不可點擊的視圖,但位於通知欄下方

WindowManager.LayoutParams params = new WindowManager.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, 
       WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, 
       PixelFormat.TRANSLUCENT); 

除了將視圖放置在通知欄上方之外,它完美地工作。如果我使用TYPE_SYSTEM_ALERT,我可以實現所需的Z順序,但是然後我的應用程序不會響應用戶輸入。然後我添加標誌FLAG_NOT_TOUCHABLE,然後允許用戶根據需要與應用程序組件進行交互。但是,手機上的後退按鈕和任務管理器按鈕不響應。

無論如何要實現我正在尋找的行爲?我希望我已經說得很清楚,用文字描述我想要的內容有點困難。謝謝!

回答

0

解決!

WindowManager.LayoutParams params = new WindowManager.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, 
       WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | 
         WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | 
         WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | 
         WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | 
         WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, 
       PixelFormat.TRANSLUCENT); 

TYPE_SYSTEM_ALERT確保系統通知欄保持在我的視圖之上。 FLAG_NOT_TOUCH_MODAL允許觸摸事件發送到視圖後面的窗口;和FLAG_NOT_TOUCHABLEFLAG_NOT_FOCUSABLE確保視圖不會收到觸摸或按鍵事件。

相關問題