2013-05-15 6 views
24

Jak narysować widok na górze wszystkich innych działań, niezależnie od tego, co pokazują i bez korzystania z działań przezroczystych lub spożywania jej zdarzeń dotykowych.Android: jak narysować za darmo na wszystko (dowolna aktywność)

Ma wyświetlać niestandardową ikonę na ekranie obok wszystkich innych aplikacji, które reagują, gdy jej dotkniesz, ale nadal możesz dotknąć innych widoków na ekranie.

Przykład: głowice rozmów na Facebooku, które wyświetlają na ekranie przeciągalną i klikalną ikonę niezależnie od tego, co robisz na ekranie głównym lub w menu aplikacji lub dowolnej aplikacji. Nadal możesz kliknąć ikonę czatu i elementy aplikacji w tle oddzielnie

Jak zrobić coś takiego?

Odpowiedz

31

Spójrz na to chłodnym artykułu, myślę, że to jest dokładnie to, co chcesz:

http://www.piwai.info/chatheads-basics

W skrócie: chcesz dodać to uprawnienie do manifestu:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> 

Dla api >= 23, musisz poprosić o zezwolenie środowiska wykonawczego Settings.ACTION_MANAGE_OVERLAY_PERMISSION

Następnie w usłudze, uzyskaj że menedżer okien

windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); 

i dodać swoje poglądy metodą addView

+0

Dokładnie! to jest odpowiedź, której potrzebowałem. Dziękuję koledze z TON! – Allahjane

+0

Zobacz http://stackoverflow.com/help/how-to-answer i http://meta.stackexchange.com/a/8259/307923 – arekolek

+0

Działa to dla mnie na <23 urządzeniach, a nie na moim 23 urządzeniu. Celuję w 22. Czy muszę przejść na 23+ i zaimplementować uprawnienia uruchomieniowe, aby to osiągnąć? – SlashG

3

Spójrz na WindowManager. Możesz zrobić coś takiego, jak (WindowManager)mContext.getSystemService("window");, jeśli chcesz uzyskać widok główny i użyć metody addView(view, params), jeśli chcesz dodać widok.

+1

właściwej ale potrzebowałem więcej szczegółów! dzięki za twoje wejście i tak – Allahjane

+0

Korzystanie z tego domu, przyciski wstecz nie działają –