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 系統預設提供下列游標:
| 游標名稱 | Icon |
|---|---|
| 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 | ![]() |




















