Piszę aplikację, która pokazuje nieodebrane połączenia i nieprzeczytane SMS-y w wyskakującym okienku. ma również funkcję przypomnienia (aby zamknąć wyskakujące okno i otworzyć je po określonym czasie). jest podobny do okna wyskakującego any.do.popup window jak any.do
Udało mi się stworzyć takie okno za pomocą WindowMangera, ale z pewnych przyczyn, których nie rozumiem do tej pory, okno pop-up znika po jakimś czasie (chociaż powinno być otwarte dopóki użytkownik go nie zamknie lub kliknie na przycisku przypomnienia, który może zająć kilka godzin).
to jest jak stworzony istniejącą okienko
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);
bo nie był pewien, czy managerem okien jest rzeczywiście właściwym sposobem na to, próbowałem też zrobić to samo z działalności z następujących styl
<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>
jego wygląd teraz podobnie jak w wersji managerem okien, ale ma jeden problem: nie mogę otworzyć okno mojej aplikacji pod nim, bo prześwitujące części okna wyglądać dobrze, ale blokują każde kliknięcie zdarzenia do okna poniżej, aby nie przewijać to lub coś z nim zrobić. tak jak w any.do po prostu chcę, aby to okno się pojawiło, ale żeby nie blokować żadnej możliwości pracy w oknie poniżej podczas otwierania okna popupwindow.
EDYCJA: chcę zobaczyć wyskakujące okno u dołu, obejmujące 30% okna, ale można przewijać okno pod nim (a także wykonywać zdarzenia kliknięcia na nim) w tym samym czasie.
więc moje pytania są następujące:
- jest managerem okien właściwa droga do stworzenia tego popupwindow?
- jeśli tak, dlaczego znika czasami niechciane? jak mogę temu zapobiec?
- jeśli nie, w jaki sposób mogę utworzyć działanie, które zachowuje się jak okno, które utworzyłem za pomocą WindowManager?
- lub są dwa sposoby nie tak? w tym przypadku; jaka jest właściwa droga?
zrobiłeś to? Potrzebuję pomysłów na ten temat. To, co zrobiłem, stworzyło działanie ze względnym układem i umieściło niektóre komponenty na dnie, ustawi motyw jako transpatentny i ustawi animację aktywności na wejście od dołu i wyjście na dół. ale aktywność w tle utknie, dopóki moja aktywność nie zostanie uruchomiona. – prashantwosti