Czy mogę utworzyć interfejs użytkownika lub widget w systemie Android, który będzie obsługiwany przez wszystkie aplikacje? Istnieją aplikacje, które mają takie widżety. Jeden przykład ma ikonę kamery na górze wszystkich aplikacji, które po kliknięciu przechwycą ekran.Jak utworzyć interfejs użytkownika lub widget, który znajduje się na szczycie wszystkich aplikacji w systemie Android?
Odpowiedz
Jeśli chcesz po prostu wyświetlić coś, możesz wyświetlić go na górze wszystkiego, nawet na ekranie blokady.
Jeśli chcesz, aby coś było klikalne, możesz wyświetlić go na czymkolwiek poza blokadą ekranu.
Oto próbka, modyfikować do własnych potrzeb:
Tworzenie usługi i wykonaj następujące czynności:
//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);
są następujące opcje dotyczące sposobu wyświetlania widoku.
Spowoduje to, że będzie to nakładka na wszystko (w tym ekran blokady), ale nie będzie klikalna. WindowManager.LayoutParams. TYPE_SYSTEM_OVERLAY
To pozwoli klikalny, ale nie będzie na ekranie blokady WindowManager.LayoutParams.TYPE_SYSTEM_ALERT
uczyni go ponad wszystko (łącznie z ekranu blokady) I kliknąć. WindowManager.LayoutParams.TYPE_SYSTEM_ERROR
Jedną rzeczą, aby pamiętać o używaniu "TYPE_SYSTEM_ERROR". Jeśli utworzysz zdarzenie click, wszystko, co się pojawi, stanie się za ekranem blokady.
Dzięki. To działało z android.permission.SYSTEM_ALERT_WINDOW – Abi
Hatcyl, czy możesz podać mi cały kod, jeśli nie masz nic przeciwko, że będę w stanie zrozumieć cały przepływ. – Max
@yacyl, czy wypróbowałeś aplikację notifierpro? Pokazuje także na górze ekranu blokady. I jest klikalne. Co to może być? – Enigma