2012-07-24 13 views
13

Znalazłem sposób tworzenia półprzezroczystego tła dla mojej aplikacji na Androida, ale jak dotąd nie znalazłem sposobu na interakcję z tym, co się za tym kryje (na przykład na ekranie głównym).Jak mogę komunikować się z elementami za przezroczystą aplikacją systemu Android?

This post pomógł mi sprawić, że aplikacja będzie wyglądać półprzezroczysto.

Jak można by pozwolić użytkownikowi na interakcję z tym, co kryje się za przezroczystą aplikacją? This app to dobry przykład aplikacji, która pozwala na korzystanie z aplikacji "Przezroczysty ekran" na Androida.

Odpowiedz

13

Bardzo prostym sposobem zrozumienia układania widoków jest wzięcie książki (dowolnej książki). Pomyśl o każdej stronie jako widoku.

Widoczność

  • Po otwarciu książki można zobaczyć stronę (Główny View - VISIBLE)
  • Po włączeniu bieżącą stronę można zobaczyć następną stronę (INVISIBLE - Widok główny, aby pokazać następny widok. Pamiętaj, że ukrywają się tylko pogląd, jeśli ustawić widoczność GONE jest to równoznaczne z rozdarcia bieżącej strony, aby zobaczyć następną stronę.)

scenariusze dotykowych

  • zakładamy, że pierwsza strona to strona wosk (półprzezroczysta strona podobna do półprzezroczystego widzenia), dzięki czemu można zobaczyć pod spodem stronę
  • Przy próbie dotknięcia rysunek na drugiej stronie są dotykania pierwszy strona, chociaż widać na drugiej stronie. Nie można dotknąć rysunku na drugiej stronie na pierwszej stronie.

nie daj się zniechęcony, ponieważ jest to widok będzie mieć do czynienia z papieru i nie można nadal robić to, co chcesz zrobić :)

  • Wdrożenie View.OnTouchListener dla obu widokach
  • Aby uzyskać przezroczyste wyświetlenie wszystkich otrzymanych zdarzeń dotykowych, wróć FALSE w metodzie onTouch
  • Android przekaże zdarzenie dotykowe do widoku podstawowego.
+0

Dziękuję bardzo za dobrze przemyślaną odpowiedź! Pomaga mi to lepiej zrozumieć widoki. Czy to działa, jeśli podstawowym widokiem jest ekran główny Androida lub inna aplikacja? Czy to działa inaczej, jeśli podstawowy widok nie jest mój? Próbowałem teraz umieścić getWindow(). AddFlags (WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE); w metodzie onCreate mojej aplikacji.Podczas przesuwania nie widzę pod ręką aktualizacji ekranu głównego, ale po jej wycofaniu ekran główny przesunął się w kierunku mojego przesunięcia. – user1549332

12

Dostałem odpowiedź. Dodawanie linii getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE); w onUtwórz drugą najwyższą aktywność (która jest przezroczysta, która zmyśliła).

Powyższe rozwiązanie ma problem. Po użyciu powyżej całego okna przechodzi dotyk na tło. Jeśli chcesz uzyskać pełną kontrolę, lepiej rozbuduj układ, np. Framelayout i zastąp "onTouchEvent" i uzyskaj lokalizację dotyku za pomocą metod event.getX() i event.getY() i zwróć wartość false w miejscu, w którym chcesz przekazać zdarzenie dotyku. Zostanie przekazany do widoku rodzica.

+2

Świetnie. to pozwala przezroczystej aktywności na działanie "pulpitu \ domu" – shaydel

Powiązane problemy