Los usuarios de Android acceden a tu app desde diferentes tipos de factores de forma, es decir, teléfonos, tablets, dispositivos plegables y Chromebooks. Cuando interactúan con tu aplicación, especialmente en pantallas más grandes, los usuarios también pueden usar algún tipo de dispositivo apuntador, como un mouse de tres botones. Las aplicaciones para Android admiten la aplicación de diferentes estilos al puntero del mouse para ayudar a los usuarios a tener una indicación visual de que pueden interactuar con un objeto.
Cómo usar los cursores predeterminados del sistema
Los usuarios conocen diferentes convenciones para interactuar con distintos tipos de objetos en dispositivos de pantalla grande. Android proporciona a los desarrolladores algunos de los íconos de cursor más comunes con los que los usuarios están familiarizados. Puedes agregar estos íconos de cursor predeterminados del sistema con algunas líneas de código. Veamos el siguiente fragmento de Kotlin:
myView.setOnHoverListener { view, _ -> view.pointerIcon = PointerIcon.getSystemIcon(applicationContext, PointerIcon.TYPE_HAND) false // Listener did not consume the event. }
En este ejemplo, myView es la vista que se establecerá en un ícono de puntero en ciertas condiciones. La condición que se muestra aquí es un estado de desplazamiento, que se produce cuando el puntero del mouse se encuentra sobre una vista. En otras situaciones, es posible que desees un ícono de espera durante el procesamiento o una mira en un juego.
El setOnHoverListener escucha cuando el puntero entra en el estado de desplazamiento y, luego, actúa en función de ese evento. Dentro del objeto de escucha de eventos, se llama a view.pointerIcon para establecer el ícono del puntero para esa vista en particular. Se usa un ícono del sistema existente para establecer el ícono del puntero.
Android tiene varios íconos del sistema integrados. Puedes ver la lista completa en la parte inferior de esta página. Se usó el ícono de TYPE_HAND, que muestra una mano cerrada con el dedo índice extendido.
Cómo usar tu propio cursor especial
// 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())
Nota: La ubicación del hotspot depende de tu caso de uso. Por ejemplo, una app de dibujo establecería el punto de acceso como la punta del lápiz o del pincel.
Ejemplos
Agregar íconos de puntero a tu aplicación es una excelente manera de ayudar a tus usuarios a tener experiencias más intuitivas en los diferentes factores de forma de los dispositivos que usan. Hay muchos íconos del sistema predeterminados excelentes disponibles y, si no se adaptan a tus necesidades, siempre puedes cargar o crear los tuyos.
-
Arrastrar y soltar: Si tu aplicación admite la acción de arrastrar desde otra aplicación y soltar en tu aplicación, puedes implementar el ícono
TYPE_NO_DROP. Esto indicaría visualmente que tu aplicación no admite el tipo de MIME que se intenta soltar en ella. -
Asignación de mapas: Si tienes una aplicación de mapas y quieres mostrar a los usuarios que pueden desplazar el mapa, puedes incluir una opción para que aparezca el ícono de
TYPE_GRABcuando se desplacen sobre el mapa. Cuando el usuario haga clic, puedes actualizar el ícono a una mano que agarra para mostrar que está desplazando el mapa. -
Edición de fotos: A los usuarios que editan fotos les gusta tener controles que les permitan seleccionar una lupa para acercar la imagen. Podrías cambiar el cursor a una lupa con el ícono
TYPE_ZOOM_INcuando se selecciona el modo de acercamiento. - Y muchas más oportunidades
Nota: Para ver diferentes cambios de puntero en acción, consulta este ejemplo de puntero de GitHub.
Apéndice
Lecturas adicionales
- Ejemplo de puntero de GitHub
- Documentación de la clase PointerIcon de Android
- Optimizing Apps for ChromeOS : Custom Cursors (Cómo optimizar apps para ChromeOS: cursores personalizados)
Cursores predeterminados del sistema
Estos son los cursores disponibles de forma predeterminada en el sistema Android.
| Nombre del cursor | Ícono |
|---|---|
| TYPE_ALIAS | ![]() |
| TYPE_ALL_SCROLL | ![]() |
| TYPE_ARROW | ![]() |
| TYPE_CELL | Cursor de celda |
| 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 | No se mostrará el cursor |
| 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 | ![]() |




















