Пользователи Android используют ваше приложение на устройствах самых разных форм-факторов: телефонах, планшетах, складных устройствах и Chromebook. При взаимодействии с вашим приложением, особенно на больших экранах, пользователи могут также использовать какое-либо указательное устройство, например, трехкнопочную мышь. Приложения для Android поддерживают применение различных стилей к указателю мыши, чтобы помочь пользователям визуально понять, что они могут взаимодействовать с объектом.
Используйте курсоры по умолчанию, установленные в системе.
Пользователи знакомы с различными способами взаимодействия с различными типами объектов на устройствах с большими экранами. Android предоставляет разработчикам некоторые из наиболее распространенных значков курсора, с которыми знакомы пользователи. Вы можете добавить эти системные значки курсора по умолчанию всего несколькими строками кода. Давайте рассмотрим следующий фрагмент кода на Kotlin:
myView.setOnHoverListener { view, _ -> view.pointerIcon = PointerIcon.getSystemIcon(applicationContext, PointerIcon.TYPE_HAND) false // Listener did not consume the event. }
В этом примере myView — это представление, которому при определенных условиях будет присвоен значок указателя мыши. Здесь демонстрируется состояние наведения курсора, которое возникает, когда указатель мыши находится над представлением. В других сценариях вам может понадобиться значок ожидания во время обработки или прицел в игре.
Обработчик события setOnHoverListener отслеживает переход указателя в состояние наведения курсора и реагирует на это событие. Внутри обработчика события вызывается view.pointerIcon для установки значка указателя для данного представления. Для установки значка указателя используется существующий системный значок.
В Android встроено несколько системных значков; полный список находится внизу этой страницы . Использовался значок TYPE_HAND , изображающий сжатую ладонь с вытянутым указательным пальцем.
Используйте свой собственный специальный курсор
// 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())
Примечание: расположение точки доступа зависит от конкретного сценария использования. Например, в приложении для рисования точка доступа будет расположена на кончике пера или кисти.
Примеры
Добавление значков-указателей в ваше приложение — отличный способ сделать взаимодействие с приложением более интуитивно понятным для пользователей на различных форм-факторах устройств. Существует множество отличных стандартных системных значков , и если они вам не подходят, вы всегда можете загрузить или создать свои собственные.
- Перетаскивание — если ваше приложение поддерживает перетаскивание из другого приложения в ваше, вы можете реализовать значок
TYPE_NO_DROP. Это даст визуальное указание на то, что ваше приложение не поддерживает MIME-тип, который пытается быть перетащен в ваше приложение. - Картография — Если у вас есть приложение для работы с картами, и вы хотите показать пользователям, что они могут перемещать карту, у них может быть опция отображения значка
TYPE_GRABпри наведении курсора на карту. Когда пользователь щелкнет, вы можете изменить значок на изображение захватывающей руки, чтобы показать, что он перемещает карту. - Редактирование фотографий — Пользователи, занимающиеся редактированием фотографий, предпочитают иметь элементы управления, позволяющие выбирать увеличительное стекло для увеличения изображения. Вы можете изменить курсор на увеличительное стекло с помощью значка
TYPE_ZOOM_IN, когда выбран режим увеличения. - И множество других возможностей
Примечание: Чтобы увидеть различные изменения указателей в действии, ознакомьтесь с этим примером использования указателей на GitHub.

Приложение
Дополнительная литература
- Пример указателя GitHub
- Документация по классу PointerIcon для Android
- Оптимизация приложений для ChromeOS: пользовательские курсоры
Системные курсоры по умолчанию
Это курсоры, доступные по умолчанию в системе Android.
| Название курсора | Икона |
|---|---|
| TYPE_ALIAS | ![]() |
| TYPE_ALL_SCROLL | ![]() |
| TYPE_ARROW | ![]() |
| TYPE_CELL | Клеточный курсор |
| 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 | Курсор отображаться не будет. |
| 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 | ![]() |




















