Aplikacje na Wear OS korzystają z tych samych technik układu co inne urządzenia z Androidem, ale muszą być zaprojektowane z uwzględnieniem ograniczeń związanych z zegarkami.
Uwaga: nie przenoś na Wear OS dokładnie tych samych funkcji i interfejsu użytkownika, które występują w aplikacji mobilnej, i nie oczekuj, że użytkownicy będą zadowoleni.
Jeśli aplikacja jest przeznaczona do korzystania na urządzeniu ręcznym o prostokątnym ekranie, treści w pobliżu rogów ekranu mogą być przycięte na okrągłych zegarkach. Jeśli używasz przewijanej listy pionowej, ten problem nie jest tak istotny, ponieważ użytkownik może przewinąć treści, aby umieścić je na środku. Jednak w przypadku pojedynczych ekranów może to negatywnie wpłynąć na wrażenia użytkowników.
Jeśli w przypadku układu użyjesz tych ustawień, tekst będzie wyświetlany nieprawidłowo na urządzeniach z ekranami okrągłymi:
<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>
Aby rozwiązać ten problem, użyj układów z biblioteki interfejsu Wear OS, które obsługują urządzenia okrągłe.
- Możesz użyć
BoxInsetLayout
, aby zapobiec przycinaniu widoków w pobliżu krawędzi okrągłych ekranów. - Jeśli chcesz wyświetlać i modyfikować pionową listę elementów zoptymalizowaną pod kątem ekranów zaokrąglonych, możesz użyć
WearableRecyclerView
do utworzenia wygiętego układu.
Więcej informacji o projektowaniu aplikacji znajdziesz w wytycznych dotyczących projektowania na Wear OS.
Używanie układu BoxInset
Klasa
BoxInsetLayout
w bibliotece interfejsu Wear OS umożliwia zdefiniowanie układu, który działa na ekranach okrągłych. Ta klasa umożliwia łatwe wyrównywanie widoków do środka lub krawędzi ekranu.
Szary kwadrat na rysunku 2 pokazuje obszar, w którym BoxInsetLayout
może automatycznie umieszczać widoki podrzędne na okrągłych ekranach po zastosowaniu wymaganych wstawek okien. Aby wyświetlać się w tym obszarze, widoki podrzędne muszą zawierać atrybut layout_boxedEdges
z tymi wartościami:
- Kombinacja
top
,bottom
,left
iright
. Na przykład wartość"left|top"
ustawia lewą i górną krawędź podrzędnego w szarej ramce na rysunku 2. - Wartość
"all"
umieszcza wszystkie treści podrzędne w szarym kwadracie na rysunku 2. Jest to najczęstsze podejście z użyciemConstraintLayout
.
Układ widoczny na rysunku 2 wykorzystuje element <BoxInsetLayout>
i działa na ekranach okrągłych:
<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>
Zwróć uwagę na części układu oznaczone pogrubioną czcionką:
-
android:padding="15dp"
Ten wiersz przypisuje wypełnienie do elementu
<BoxInsetLayout>
. -
android:padding="5dp"
Ten wiersz przypisuje wypełnienie do wewnętrznego elementu
ConstraintLayout
. -
app:layout_boxedEdges="all"
Ta linia zapewnia, że element
ConstraintLayout
i jego elementy podrzędne są umieszczone w obszarze zdefiniowanym przez wstawki okna na okrągłych ekranach.
Używanie wygiętego układu
Klasa
WearableRecyclerView
w bibliotece interfejsu Wear OS umożliwia włączenie wygiętego układu zoptymalizowanego pod kątem okrągłych ekranów.
Aby włączyć wygięty układ dla przewijanych list w aplikacji, zapoznaj się z artykułem
Tworzenie list na Wear OS.