Apps unter Wear OS nutzen dieselben Layouttechniken wie auf anderen Android-Geräten müssen aber mit Smartwatch-spezifischen Einschränkungen gestaltet werden.
Hinweis:Wenn Sie die Funktionen und die Benutzeroberfläche einer mobilen App nicht genau auf Wear OS übertragen, User Experience zu schaffen.
Wenn Sie Ihre App für ein rechteckiges Handheld-Gerät entwerfen, werden Inhalte in der Nähe der Ecken des Bildschirms kann bei runden Uhren abgeschnitten werden. Wenn Sie eine scrollbare vertikale Liste verwenden, ist dies weniger ein Problem, da der Nutzer scrollen kann, um den Inhalt zu zentrieren. Für einzelne Bildschirme kann es jedoch eine schlechte User Experience bieten.
Wenn Sie die folgenden Einstellungen für Ihr Layout verwenden, wird der Text auf Geräten falsch angezeigt. mit runden Displays:
<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>
Um dieses Problem zu lösen, verwenden Sie Layouts im Wear OS-UI-Bibliothek, die runde Geräte unterstützt.
- Sie können ein
BoxInsetLayout
- um zu verhindern, dass Ansichten an den Rändern von runden Displays abgeschnitten werden. - Du kannst einen
WearableRecyclerView
verwenden geschwungenes Layout erstellen, wenn Sie ein vertikale Liste von Artikeln, die für runde Bildschirme optimiert sind.
Weitere Informationen über das Entwerfen von Apps finden Sie in den Designrichtlinien für Wear OS
BoxInsetLayout verwenden
Die <ph type="x-smartling-placeholder"></ph>
Mit der Klasse BoxInsetLayout
in der Wear OS-UI-Bibliothek
definieren Sie ein Layout,
das für runde Bildschirme geeignet ist. In diesem Kurs können Sie
Ansichten in der Mitte oder am Bildschirmrand ausrichten.
Das graue Quadrat in Abbildung 2 stellt den Bereich dar, in dem BoxInsetLayout
kann seine Kinder nach dem Anwenden automatisch auf runden Bildschirmen platzieren
die erforderlichen Fenstereinlagen. Um in diesem Bereich angezeigt zu werden,
Ansichten geben das Attribut layout_boxedEdges
mit den folgenden Werten an:
- Eine Kombination aus
top
,bottom
,left
undright
. Beispiel: Der Wert „"left|top"
“ positioniert das untergeordnete Element links und oben innerhalb des grauen Quadrats in Abbildung 2. - Mit dem Wert
"all"
werden alle Inhalte des untergeordneten Publishers positioniert. das graue Quadrat in Abbildung 2. Dies ist der gängigste Ansatz mit einemConstraintLayout
im Inneren.
Das in Abbildung 2 gezeigte Layout verwendet <BoxInsetLayout>
.
und funktioniert auf runden Bildschirmen:
<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>
Beachten Sie die fett dargestellten Teile des Layouts:
-
android:padding="15dp"
Diese Zeile weist dem
<BoxInsetLayout>
-Element einen Abstand zu -Elements. -
android:padding="5dp"
Mit dieser Zeile wird dem inneren
ConstraintLayout
-Element ein Innenrand zugewiesen. -
app:layout_boxedEdges="all"
Mit dieser Zeile wird sichergestellt, dass das
ConstraintLayout
-Element Die untergeordneten Elemente sind innerhalb des vom Fenster definierten Bereichs Einsätze auf runden Displays.
Geschwungenes Layout verwenden
Klasse
WearableRecyclerView
in der Wear OS-UI-Bibliothek
können Sie ein geschwungenes Layout verwenden, das für runde Bildschirme optimiert ist.
So aktivieren Sie ein geschwungenes Layout für scrollbare Listen in der
App findest du unter
Listen unter Wear OS erstellen