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ś dokładnej funkcjonalności i interfejsu z aplikacji mobilnej na Wear OS, oczekując dobrego wrażenia użytkownika.
Jeśli zaprojektujesz aplikację na prostokątne urządzenie przenośne, treści w pobliżu rogów ekranu mogą zostać przycięte na okrągłych zegarkach. Jeśli używasz przewijanej listy pionowej, problem jest mniejszy, ponieważ użytkownik może przewinąć, aby wyśrodkować treść. W przypadku pojedynczych ekranów może to jednak pogorszyć wrażenia użytkownika.
Jeśli używasz tych ustawień układu, tekst będzie się nieprawidłowo wyświetlać na urządzeniach z okrągłymi ekranami:
<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ą okrągłe urządzenia.
- Możesz użyć
BoxInsetLayoutaby zapobiec przycinaniu widoków w pobliżu krawędzi okrągłych ekranów. - Możesz użyć
WearableRecyclerView, aby utworzyć zakrzywiony układ, gdy chcesz wyświetlać i manipulować pionową listą elementów zoptymalizowaną pod kątem okrągłych ekranów.
Więcej informacji o projektowaniu aplikacji znajdziesz w wytycznych dotyczących projektowania na Wear OS.
Używanie BoxInsetLayout
Rysunek 2. Wcięcia okien na okrągłym ekranie.
Klasa
BoxInsetLayout w bibliotece interfejsu Wear OS umożliwia
zdefiniowanie układu, który działa na okrągłych ekranach. Ta klasa pozwala łatwo wyrównać widoki na środku lub w pobliżu 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 wcięć okien. Aby wyświetlać się w tym obszarze, widoki podrzędne
określają atrybut layout_boxedEdges z tymi wartościami:
- Połączenie
top,bottom,leftiright. Na przykład wartość"left|top"umieszcza lewą i górną krawędź elementu podrzędnego w szarym kwadracie na rysunku 2. - Wartość
"all"umieszcza całą zawartość elementu podrzędnego w szarym kwadracie na rysunku 2. Jest to najczęstsze podejście w przypadkuConstraintLayoutwewnątrz.
Układ pokazany na rysunku 2 używa elementu <BoxInsetLayout>
i działa na okrągłych ekranach:
<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"Ta linia przypisuje dopełnienie do elementu
<BoxInsetLayout>. -
android:padding="5dp"Ta linia przypisuje dopełnienie do wewnętrznego elementu
ConstraintLayout. -
app:layout_boxedEdges="all"Ta linia zapewnia, że element
ConstraintLayouti jego elementy podrzędne są umieszczone w obszarze zdefiniowanym przez wcięcia okien na okrągłych ekranach.
Używanie zakrzywionego układu
Klasa
WearableRecyclerView w bibliotece interfejsu Wear OS
umożliwia włączenie zakrzywionego układu zoptymalizowanego pod kątem okrągłych ekranów.
Aby włączyć zakrzywiony układ dla przewijanych list w swojej
aplikacji, przeczytaj artykuł
Tworzenie list na Wear OS.