sto scrivendo un'app che mostra le chiamate perse e gli sms non letti in una finestra pop-up. ha anche una funzione di promemoria (per chiudere la finestra a comparsa e aprirla dopo un intervallo di tempo specificato). è simile alla finestra popup di any.do.finestra popup come any.do
Sono stato in grado di creare una finestra di questo tipo utilizzando WindowManger, ma per alcuni motivi che non capisco fino ad ora, la finestra pop-up scompare dopo un po 'di tempo (anche se dovrebbe essere aperta fino a quando l'utente non lo chiude o fa clic sul pulsante di promemoria che potrebbe richiedere ore).
Ecco come ho creato la finestra pop-up esistente
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);
perché non ero sicuro se il WindowManager è davvero il modo giusto per questo, ho anche provato a fare lo stesso con un'attività con i seguenti stile
<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>
suo aspetto ora proprio come la versione WindowManager, ma ha un problema: non posso accedere alla finestra del mio app di sotto di essa, perché le parti traslucide della finestra look perfetto, ma bloccare tutti gli eventi click alla finestra di seguito, in modo che non possa scorrere o fare qualsiasi cosa con esso. come in any.do voglio solo che la finestra si mostri, ma non per bloccare alcuna possibilità di lavorare sulla finestra sottostante mentre la finestra popup è aperta.
MODIFICA: voglio vedere la finestra di pop-up in basso, che copre il 30% della finestra, ma essere in grado di scorrere la finestra sotto di esso (e anche eseguire eventi click su di esso) allo stesso tempo.
così le mie domande sono:
- è il WindowManager il modo giusto per creare questa PopupWindow?
- se sì, perché scompare a volte indesiderato? come posso prevenirlo?
- se no, come posso creare un'attività che si comporta come la finestra che ho creato con WindowManager?
- o entrambi i modi sono errati? in questo caso; che cosa è la strada giusta?
hai fatto questo? Ho bisogno di alcune idee su questo. Quello che ho fatto è stato creare un'attività con un layout relativo e posizionare alcuni componenti sul fondo, impostare il tema come transpatent e impostare l'animazione dell'attività per entrare dal basso e uscire in basso. ma l'attività di background si blocca fino a quando la mia attività è in esecuzione. – prashantwosti