Użytkownicy Androida korzystają z Twojej aplikacji na różnych urządzeniach, np. telefonach, tabletach, urządzeniach składanych i Chromebookach. Podczas interakcji z aplikacją, zwłaszcza na większych ekranach, użytkownicy mogą też używać urządzenia wskazującego, np. myszy z 3 przyciskami. Aplikacje na Androida obsługują stosowanie różnych stylów wskaźnika myszy, aby użytkownicy mieli wizualną wskazówkę, że mogą wejść w interakcję z obiektem.
Używaj domyślnych kursorów systemowych
Użytkownicy znają różne konwencje interakcji z różnymi typami obiektów na urządzeniach z dużym ekranem. Android udostępnia deweloperom niektóre z najpopularniejszych ikon kursora, które są znane użytkownikom. Możesz dodać te domyślne ikony kursora systemowego za pomocą kilku wierszy kodu. Przyjrzyjmy się temu fragmentowi kodu w Kotlinie:
myView.setOnHoverListener { view, _ -> view.pointerIcon = PointerIcon.getSystemIcon(applicationContext, PointerIcon.TYPE_HAND) false // Listener did not consume the event. }
W tym przykładzie myView to widok, który w określonych warunkach zostanie ustawiony jako ikona wskaźnika. Warunek przedstawiony tutaj to stan najechania, który występuje, gdy wskaźnik myszy znajduje się nad widokiem. W innych sytuacjach możesz potrzebować ikony oczekiwania podczas przetwarzania lub celownika w grze.
setOnHoverListener nasłuchuje, kiedy wskaźnik przechodzi w stan najechany, a następnie reaguje na to zdarzenie. W detektorze zdarzeń wywoływana jest funkcja view.pointerIcon, aby ustawić ikonę wskaźnika dla danego widoku. Do ustawienia ikony wskaźnika używana jest istniejąca ikona systemowa.
Android ma kilka wbudowanych ikon systemowych. Pełną listę znajdziesz u dołu tej strony. Użyto ikony TYPE_HAND, która przedstawia zamkniętą dłoń z wyciągniętym palcem wskazującym.
Używanie własnego kursora specjalnego
// Loading a bitmap to use as a pointer icon BitmapFactory.decodeResource( this.resources, R.drawable.dollar_sign ), CURSOR_WIDTH, CURSOR_HEIGHT, false ) // Creating the pointer icon and sending clicks from the center of the mouse icon PointerIcon.create(dollarBitmap, (CURSOR_WIDTH/2).toFloat(), (CURSOR_HEIGHT/2).toFloat())
Uwaga: lokalizacja hotspotu zależy od konkretnego przypadku użycia. Na przykład aplikacja do rysowania może ustawić obszar interaktywny na końcówkę pióra lub pędzla.
Przykłady
Dodanie ikon wskaźnika do aplikacji to świetny sposób na zapewnienie użytkownikom bardziej intuicyjnych wrażeń na różnych urządzeniach, z których korzystają. Dostępnych jest wiele świetnych domyślnych ikon systemowych. Jeśli nie spełniają one Twoich potrzeb, zawsze możesz wczytać lub utworzyć własne.
-
Przeciągnij i upuść – jeśli Twoja aplikacja obsługuje przeciąganie z innej aplikacji i upuszczanie w niej, możesz wdrożyć ikonę
TYPE_NO_DROP. W ten sposób użytkownik będzie mógł wizualnie sprawdzić, czy aplikacja nie obsługuje typu MIME, który próbuje przeciągnąć do aplikacji. -
Mapowanie – jeśli masz aplikację do mapowania i chcesz pokazać użytkownikom, że mogą przesuwać mapę, możesz wyświetlać ikonę
TYPE_GRABpo najechaniu kursorem na mapę. Gdy użytkownik kliknie, możesz zmienić ikonę na dłoń, aby pokazać, że przesuwa mapę. -
Edycja zdjęć – użytkownicy edytujący zdjęcia lubią mieć możliwość powiększania obrazu za pomocą lupy. Możesz zmienić kursor na lupę z ikoną
TYPE_ZOOM_IN, gdy wybrany jest tryb powiększenia. - I wiele innych możliwości
Uwaga: aby zobaczyć różne zmiany wskaźnika w działaniu, zapoznaj się z tym przykładowym wskaźnikiem w GitHubie.
Dodatek
Materiały dodatkowe
- Przykładowy wskaźnik GitHub
- Dokumentacja klasy PointerIcon w Androidzie
- Optymalizacja aplikacji pod kątem ChromeOS : niestandardowe kursory
Domyślne kursory systemowe
Oto domyślnie dostępne kursory w systemie Android.
| Nazwa kursora | Ikona |
|---|---|
| TYPE_ALIAS | ![]() |
| TYPE_ALL_SCROLL | ![]() |
| TYPE_ARROW | ![]() |
| TYPE_CELL | Kursor komórki |
| TYPE_CONTEXT_MENU | ![]() |
| TYPE_COPY | ![]() |
| TYPE_CROSSHAIR | ![]() |
| TYPE_DEFAULT | ![]() |
| TYPE_GRAB | ![]() |
| TYPE_GRABBING | ![]() |
| TYPE_HAND | ![]() |
| TYPE_HELP | ![]() |
| TYPE_HORIZONTAL_DOUBLE_ARROW | ![]() |
| TYPE_NO_DROP | ![]() |
| TYPE_NULL | Kursor nie będzie widoczny |
| TYPE_TEXT | ![]() |
| TYPE_TOP_LEFT_DIAGONAL_DOUBLE_ARROW | ![]() |
| TYPE_TOP_RIGHT_DIAGONAL_DOUBLE_ARROW | ![]() |
| TYPE_VERTICAL_DOUBLE_ARROW | ![]() |
| TYPE_VERTICAL_TEXT | ![]() |
| TYPE_WAIT | ![]() |
| TYPE_ZOOM_IN | ![]() |
| TYPE_ZOOM_OUT | ![]() |




















