Ecco come le cose come Toast e le finestre di dialogo di lavoro:
Nel caso in cui semplicemente aggiungendo o portare in primo piano non funziona, dire quando si stanno avendo un servizio di aggiungere la propria visione ad un'altra attività client o applicazione (FaceUnlock fa questo), o non puoi dipendere da gerarchie, devi usare il gestore di finestre e un token di finestra per fare il trucco. È quindi possibile creare layout e sfruttare le animazioni e l'accelerazione hardware come prima.
WindowManager windowManager = (WindowManager) getBaseContext().getSystemService(Context.WINDOW_SERVICE);
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(WindowManager.LayoutParams.FIRST_SUB_WINDOW);
layoutParams.width = 300;
layoutParams.height = 300;
layoutParams.format = PixelFormat.RGBA_8888;
layoutParams.flags =
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
| WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;
layoutParams.token = getWindow().getDecorView().getRootView().getWindowToken();
//Feel free to inflate here
mTestView = new View(this);
mTestView.setBackgroundColor(Color.RED);
//Must wire up back button, otherwise it's not sent to our activity
mTestView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
onBackPressed();
}
return true;
}
});
windowManager.addView(mTestView, layoutParams);
quindi assicuratevi di rimuovere l'OnDestroy vista (o onPause) o si andrà in crash
if (mTestView != null) {
WindowManager windowManager = (WindowManager) getBaseContext().getSystemService(Context.WINDOW_SERVICE);
if (mTestView.isShown()) {
windowManager.removeViewImmediate(mTestView);
}
}
fonte
2015-04-03 17:24:53
Vedere la risposta a questa domanda: http://stackoverflow.com/questions/2176922/how-to-create-transparent-activity-in-android – Jules
Così trasparente non consumare tutti gli eventi touch? – Allahjane
Sì, ma di solito è quello che desideri se stai disegnando sopra un'altra attività. Ignora la tua vista se l'utente tocca all'esterno sarebbe il mio consiglio. – Jules