Posso creare un'interfaccia utente o un widget in Android che siederà sopra tutte le applicazioni? Ci sono applicazioni che hanno widget come questo. Un esempio ha un'icona della fotocamera sopra tutte le applicazioni che, quando si fa clic, cattureranno lo schermo.Come creare un'interfaccia utente o un widget che si trova in cima a tutte le applicazioni in Android?
risposta
Se si desidera visualizzare solo qualcosa, è possibile visualizzarlo sopra a tutto anche il lockscreen.
Se si desidera che qualcosa sia selezionabile, è possibile visualizzarlo sopra qualsiasi elemento tranne la schermata di blocco.
Ecco un esempio, modificare le vostre esigenze:
creare un servizio ed effettuare le seguenti operazioni:
//These three are our main components.
WindowManager wm;
LinearLayout ll;
WindowManager.LayoutParams ll_lp;
//Just a sample layout parameters.
ll_lp = new WindowManager.LayoutParams();
ll_lp.format = PixelFormat.TRANSLUCENT;
ll_lp.height = WindowManager.LayoutParams.FILL_PARENT;
ll_lp.width = WindowManager.LayoutParams.FILL_PARENT;
ll_lp.gravity = Gravity.CLIP_HORIZONTAL | Gravity.TOP;
//This one is necessary.
ll_lp.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
//Play around with these two.
ll_lp.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;
ll_lp.flags = ll_lp.flags | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
//This is our main layout.
ll = new LinearLayout(this);
ll.setBackgroundColor(android.graphics.Color.argb(0, 0, 0, 0));
ll.setHapticFeedbackEnabled(true);
//And finally we add what we created to the screen.
wm.addView(ll, ll_lp);
Di seguito sono più opzioni per la modalità di visualizzazione della vista.
Questo lo renderà una sovrapposizione su tutto (compresa la schermata di blocco), ma non selezionabile. WindowManager.LayoutParams. TYPE_SYSTEM_OVERLAY
questo modo sarà cliccabile, ma non sarà finita la schermata di blocco WindowManager.LayoutParams.TYPE_SYSTEM_ALERT
In questo modo sarà sopra di tutto (compreso il blocco dello schermo) e cliccabile. WindowManager.LayoutParams.TYPE_SYSTEM_ERROR
Una cosa da notare sull'utilizzo "TYPE_SYSTEM_ERROR". Se esegui il collegamento a un evento click, qualsiasi cosa invochi avverrà dietro la schermata di blocco.
Grazie. Ha funzionato con android.permission.SYSTEM_ALERT_WINDOW – Abi
Hatcyl, puoi fornirmi l'intero codice se non ti dispiace, in modo che sia in grado di comprendere anche l'intero flusso. – Max
@hatcyl, hai provato l'app notifierpro? Mostra anche in cima allo schermo di blocco. Ed è cliccabile. Cosa potrebbe essere? – Enigma