Le app su Wear OS utilizzano le stesse tecniche di layout degli altri dispositivi Android ma devono essere progettate con vincoli specifici per gli smartwatch.
Nota: non eseguire il porting della funzionalità e della UI esatte da un'app mobile a Wear OS e aspettarti una buona esperienza utente.
Se progetti l'app per un dispositivo portatile rettangolare, i contenuti vicino agli angoli dello schermo potrebbero essere ritagliati sugli smartwatch rotondi. Se utilizzi un elenco verticale scorrevole, il problema è minore, poiché l'utente può scorrere per centrare i contenuti. Tuttavia, per le schermate singole, può offrire una pessima esperienza utente.
Se utilizzi le seguenti impostazioni per il layout, il testo viene visualizzato in modo errato sui dispositivi con schermi rotondi:
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/text" android:layout_width="0dp" android:layout_height="0dp" android:text="@string/very_long_hello_world" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
Per risolvere questo problema, utilizza i layout nella libreria UI di Wear OS che supportano i dispositivi rotondi.
- Puoi utilizzare un
BoxInsetLayoutper impedire che le visualizzazioni vengano ritagliate vicino ai bordi degli schermi rotondi. - Puoi utilizzare un
WearableRecyclerViewper creare un layout curvo quando vuoi visualizzare e manipolare un elenco verticale di elementi ottimizzati per gli schermi rotondi.
Per ulteriori informazioni sulla progettazione di app, consulta le linee guida di progettazione di Wear OS.
Utilizza un BoxInsetLayout
Figura 2. Inserimenti finestra su uno schermo rotondo.
La classe
BoxInsetLayout nella libreria UI di Wear OS ti consente
di definire un layout che funziona per gli schermi rotondi. Questa classe ti consente di
allineare facilmente le visualizzazioni al centro o vicino ai bordi dello schermo.
Il quadrato grigio nella figura 2 mostra l'area in cui il BoxInsetLayout
può posizionare automaticamente le visualizzazioni secondarie sugli schermi rotondi dopo aver applicato
gli inserimenti finestra richiesti. Per essere visualizzate all'interno di questa area, le visualizzazioni secondarie specificano l'attributo layout_boxedEdges con i seguenti valori:
- Una combinazione di
top,bottom,lefteright. Ad esempio, un"left|top"valore posiziona i bordi sinistro e superiore dell'elemento secondario all'interno del quadrato grigio nella figura 2. - Il valore
"all"posiziona tutti i contenuti dell'elemento secondario all'interno del quadrato grigio nella figura 2. Questo è l'approccio più comune con unConstraintLayoutall'interno.
Il layout mostrato nella figura 2 utilizza l'elemento <BoxInsetLayout>
e funziona sugli schermi rotondi:
<androidx.wear.widget.BoxInsetLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_height="match_parent" android:layout_width="match_parent" android:padding="15dp"> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent" android:padding="5dp" app:layout_boxedEdges="all"> <TextView android:layout_height="wrap_content" android:layout_width="match_parent" android:text="@string/sometext" android:textAlignment="center" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <ImageButton android:background="@android:color/transparent" android:layout_height="50dp" android:layout_width="50dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" android:src="@drawable/cancel" /> <ImageButton android:background="@android:color/transparent" android:layout_height="50dp" android:layout_width="50dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" android:src="@drawable/ok" /> </androidx.constraintlayout.widget.ConstraintLayout> </androidx.wear.widget.BoxInsetLayout>
Osserva le parti del layout contrassegnate in grassetto:
-
android:padding="15dp"Questa riga assegna il padding all'elemento
<BoxInsetLayout>. -
android:padding="5dp"Questa riga assegna il padding all'elemento
ConstraintLayoutinterno. -
app:layout_boxedEdges="all"Questa riga garantisce che l'elemento
ConstraintLayoute i relativi elementi secondari siano racchiusi all'interno dell'area definita dagli inserimenti finestra sugli schermi rotondi.
Utilizza un layout curvo
La classe
WearableRecyclerView nella libreria UI di Wear OS
ti consente di attivare un layout curvo ottimizzato per gli schermi rotondi.
Per attivare un layout curvo per gli elenchi scorrevoli nella tua
app, consulta
Creare elenchi su Wear OS.