鼠标指针图标

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 文本光标(I 型光标)。
TYPE_TOP_LEFT_DIAGONAL_DOUBLE_ARROW 用于调整大小的从左上角到右下角的对角线双箭头光标。
TYPE_TOP_RIGHT_DIAGONAL_DOUBLE_ARROW 用于调整大小的从右上角到左下角的对角双箭头光标。
TYPE_VERTICAL_DOUBLE_ARROW 用于调整大小的垂直双箭头光标。
TYPE_VERTICAL_TEXT 垂直文本光标,一个水平的 I 形光标。
TYPE_WAIT 等待光标,即沙漏或旋转圆圈。
TYPE_ZOOM_IN 放大光标,即带有加号的放大镜。
TYPE_ZOOM_OUT 缩小光标,即带有减号的放大镜。