我正在寫一個應用程序,顯示未接電話和未讀短信在彈出窗口。它還具有提醒功能(關閉彈出窗口並在指定時間後打開它)。它類似於any.do的彈出窗口。像any.do彈出窗口
我能夠通過使用WindowManger創建這樣一個窗口,但由於某些原因,目前爲止我還不明白,彈出窗口在一段時間後消失(儘管應該一直打開,直到用戶關閉它或點擊在需要幾小時的提醒按鈕上)。
這是我創建的現有彈出窗口
windowManager = (WindowManager) context.getApplicationContext()
.getSystemService(Context.WINDOW_SERVICE);
this.inflater = LayoutInflater.from(context);
params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
+ WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
+ WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.BOTTOM;
vgPopupWindow = (ViewGroup) LayoutInflater.from(context).inflate(R.layout.popup_mainwindow, null);
vgPopupContent = (ViewFlipper) vgPopupWindow.findViewById(R.id.popup_content);
vgPopupAreaContent = (ViewGroup) vgPopupWindow.findViewById(R.id.popup_area_content);
vgPopupAreaActions = (ViewGroup) vgPopupWindow.findViewById(R.id.popup_area_actions);
vgPopupTabs = (LinearLayout) vgPopupWindow.findViewById(R.id.popup_tabs);
vgPopupHeader = (LinearLayout) vgPopupWindow.findViewById(R.id.popup_main_header);
windowManager.addView(vgPopupWindow, params);
,因爲我不知道,如果窗口管理器是真的,正確的方法,我也試圖做一個活動同樣具有以下的風格
<style name="PopupWindow" parent="CustomTheme">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">false</item>
<item name="android:windowIsTranslucent">true</item>
它現在看起來就像窗口管理器的版本,但有一個問題:我不能訪問它下面我的應用程序的窗口,因爲窗口的半透明部分看起來很完美,但阻止任何點擊事件窗口下面,以便我不能滾動它或做任何事情。就像任何一樣。我只想讓窗口出現,但不要阻止任何可能性在彈出窗口打開時在下面的窗口上工作。
編輯:我想看到底部彈出窗口,覆蓋30%的窗口,但能夠同時滾動下面的窗口(並在其上執行點擊事件)。
所以我的問題是:
- 是窗口管理器,創建此popupwindow的正確方法?
- 如果是,爲什麼它消失有時不需要?我如何防止它?
- 如果不是,我如何創建一個活動,就像我用WindowManager創建的窗口一樣?
- 或者都是錯誤的?在這種情況下;什麼是正確的方式?
你完成了嗎?我需要一些關於此的想法。我所做的是創建一個具有相對佈局的活動,並在botton上放置一些組件,將主題設置爲transpratent,並設置活動動畫從底部進入並退出到底部。但後臺活動一直持續到我的活動正在運行。 – prashantwosti