Con Wear OS by Google, crear diseños para un reloj es similar a hacerlo para un teléfono, con la diferencia de que debes tener en cuenta el tamaño de pantalla y la visibilidad. Si portas la funcionalidad y la IU de una app para teléfono a un reloj, no obtendrás una buena experiencia.
Solo debes crear diseños personalizados cuando sea necesario. Si quieres obtener información sobre cómo diseñar apps increíbles para relojes, consulta los lineamientos de diseño para Wear OS.
Cómo crear notificaciones personalizadas
En general, debes crear notificaciones en el teléfono y permitir que se sincronicen automáticamente con el dispositivo wearable. De esta manera, podrás crear las notificaciones una sola vez y hacer que aparezcan en distintos tipos de dispositivos (no solo relojes, sino también en Auto y TV) sin tener que diseñarlas para diferentes factores de forma.
Si los estilos de notificaciones estándar (como NotificationCompat.BigTextStyle
o NotificationCompat.InboxStyle
) no te resultan útiles, puedes mostrar una actividad con un diseño personalizado. Solo puedes crear y emitir notificaciones personalizadas en el reloj; el sistema no las sincronizará con el teléfono.
Nota: Cuando crees notificaciones personalizadas en el reloj, podrás usar las API de notificaciones estándar (API nivel 20) en lugar de la biblioteca de compatibilidad.
Para crear notificaciones personalizadas, haz lo siguiente:
- Crea un diseño y establécelo como la vista de contenido de la actividad que quieres mostrar.
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { ... setContentView(R.layout.notification_activity) }
Java
public void onCreate(Bundle bundle){ ... setContentView(R.layout.notification_activity); }
-
Define las propiedades necesarias para la actividad en el manifiesto de Android a fin de permitir que esta se muestre en el proceso de trasmisión de contexto del reloj. Debes declarar que la actividad puede exportarse, incorporarse y que tiene una afinidad de tarea vacía. Además, te recomendamos que establezcas el tema en
Theme.DeviceDefault.Light
. Por ejemplo:<activity android:name="com.example.MyDisplayActivity" android:exported="true" android:allowEmbedded="true" android:taskAffinity="" android:theme="@android:style/Theme.DeviceDefault.Light" />
-
Crea un
PendingIntent
para la actividad que quieras mostrar. Por ejemplo:Kotlin
val notificationPendingIntent: PendingIntent = Intent(this, NotificationActivity::class.java).let { notificationIntent -> PendingIntent.getActivity( this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT ) }
Java
Intent notificationIntent = new Intent(this, NotificationActivity.class); PendingIntent notificationPendingIntent = PendingIntent.getActivity( this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
-
Compila una
Notification
y llama al métodosetDisplayIntent()
proporcionando elPendingIntent
. El sistema usa estePendingIntent
para iniciar la actividad cuando los usuarios ven la notificación. - Emite la notificación con el método
notify()
.Nota: En Wear 1.x, cuando se visualiza una notificación en la pantalla principal, el sistema la muestra con una plantilla estándar que genera a partir de los datos semánticos de la notificación. Esta plantilla funciona bien en todas las caras de reloj. Cuando los usuarios deslizan la notificación hacia arriba, ven su actividad personalizada.
Cómo crear diseños con la biblioteca de la IU de Wear
La biblioteca de la IU de Wear se incluye automáticamente cuando creas tu app para relojes con el Asistente de proyectos de Android Studio. También puedes agregar esta biblioteca a tu archivo build.gradle
con la siguiente declaración de dependencia:
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'androidx.wear:wear:1.0.0' compile 'com.google.android.gms:play-services-wearable:+' }
Esta biblioteca te ayuda a crear IU diseñadas para relojes. Para obtener más información, consulta Cómo crear IU personalizadas para dispositivos Wear.
A continuación, se muestran algunas de las clases principales:
-
BoxInsetLayout
-
Corresponde a un objeto
FrameLayout
que reconoce la forma de la pantalla y puede ubicar sus elementos secundarios en el cuadrado central de una pantalla circular. -
ConfirmationActivity
- Corresponde a una actividad que muestra animaciones de confirmación luego de que el usuario completa una acción.
-
AnimationSet
- Corresponde a un grupo de animaciones que deben reproducirse en conjunto.
-
CircularProgressLayout
- Corresponde a un diseño que proporciona un temporizador de cuenta regresiva circular alrededor de la vista secundaria. Por lo general, se usa como temporizador automático para confirmar una operación después de que transcurrió un breve lapso.
-
SnapHelper
-
SnapHelper
admite ajustes para un objetoRecyclerView
. -
PagerSnapHelper
-
Corresponde a la implementación de la instancia
SnapHelper
que admite el ajuste del estilo del localizador en orientación horizontal o vertical. -
AlertDialog
- Corresponde a una subclase de Dialog que puede mostrar uno, dos o tres botones.
-
ProgressBar
- Muestra una barra al usuario en la que se representa el progreso de la operación; la app puede modificar el nivel de progreso (cambiar la longitud de la barra) a medida que esta avanza.
-
WearableRecyclerView
-
Corresponde a la implementación específica de dispositivos wearable de la clase
RecyclerView
para mostrar listas desplazables de elementos en dispositivos cuadrados o circulares.
Referencia de la API de la biblioteca de la IU de Wear
En la documentación de referencia, se proporciona una explicación detallada sobre cómo usar cada widget de la IU. Explora la Documentación de referencia sobre la API de Wear para obtener información sobre las clases mencionadas anteriormente.
Nota: Recomendamos usar Android Studio para el desarrollo de Wear OS, ya que proporciona elementos prácticos de configuración de proyectos, inclusión de bibliotecas y empaquetado.