Значки указателя мыши

Пользователи 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.

Пользовательские значки указателя в приложении для Android.

Приложение

Дополнительная литература

Системные курсоры по умолчанию

Это курсоры, доступные по умолчанию в системе 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 Курсор уменьшения масштаба — увеличительное стекло со знаком минус.