Nutzer können eine Wear OS-Aktivität beenden, indem sie von links nach rechts wischen. Wenn die App horizontal scrollt, wechselt der Nutzer zum Ende des Inhalts und wischt dann von links nach rechts, um sie zu schließen. Durch Drücken der Ein-/Aus-Taste kehrt der Nutzer ebenfalls zum Zifferblatt zurück.
Wischgeste zum Schließen
Nutzer wischen von links nach rechts, um den aktuellen Bildschirm zu schließen. Wir empfehlen daher Folgendes:
- Vertikale Layouts
- Content-Container
Wir empfehlen außerdem, dass Ihre App keine horizontalen Wischgesten enthält.
Aktivität schließen
Bei Aktivitäten wird automatisch das Wischen zum Schließen unterstützt. Wenn Sie eine Aktivität von links nach rechts wischen, wird sie geschlossen und die App wechselt zum zurückliegenden Stack.
Fragment schließen
Wenn Sie das Wischen zum Schließen in Fragmenten unterstützen möchten, müssen Sie die Ansicht, die das Fragment enthält, in der Klasse
SwipeDismissFrameLayout
einschließen. Berücksichtigen Sie dies bei der Entscheidung, ob Sie Fragmente verwenden möchten. Verwenden Sie die Klasse SwipeDismissFrameLayout
wie im folgenden Beispiel:
Kotlin
class SwipeDismissFragment : Fragment() { private val callback = object : SwipeDismissFrameLayout.Callback() { override fun onSwipeStarted(layout: SwipeDismissFrameLayout) { // Optional } override fun onSwipeCanceled(layout: SwipeDismissFrameLayout) { // Optional } override fun onDismissed(layout: SwipeDismissFrameLayout) { // Code here for custom behavior, such as going up the // back stack and destroying the fragment but staying in the app. } } override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View = SwipeDismissFrameLayout(activity).apply { // If the fragment should fill the screen (optional), then in the layout file, // in the androidx.wear.widget.SwipeDismissFrameLayout element, // set the android:layout_width and android:layout_height attributes // to "match_parent". inflater.inflate( R.layout.swipe_dismiss_frame_layout, this, false ).also { inflatedView -> addView(inflatedView) } addCallback(callback) } }
Java
public class SwipeDismissFragment extends Fragment { private final Callback callback = new Callback() { @Override public void onSwipeStart() { // Optional } @Override public void onSwipeCancelled() { // Optional } @Override public void onDismissed(SwipeDismissFrameLayout layout) { // Code here for custom behavior, such as going up the // back stack and destroying the fragment but staying in the app. } }; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { SwipeDismissFrameLayout swipeLayout = new SwipeDismissFrameLayout(getActivity()); // If the fragment should fill the screen (optional), then in the layout file, // in the androidx.wear.widget.SwipeDismissFrameLayout element, // set the android:layout_width and android:layout_height attributes // to "match_parent". View inflatedView = inflater.inflate(R.layout.swipe_dismiss_frame_layout, swipeLayout, false); swipeLayout.addView(inflatedView); swipeLayout.addCallback(callback); return swipeLayout; } }
Hinweis:Wenn Sie in Ihrer Aktivität Fragmente verwenden, verwenden Sie FragmentManager.add
anstelle von FragmentManager.replace
, um die Wisch-Geste zum Schließen zu unterstützen.
So wird sichergestellt, dass das vorherige Fragment unter dem oberen Fragment gerendert wird, während es weggewischt wird.
Horizontal scrollbare Ansichten
In einigen Fällen, z. B. in einer Ansicht mit einer Karte, die das Schwenken unterstützt, kann die Benutzeroberfläche das horizontale Wischen nicht verhindern. In diesem Szenario haben Sie zwei Möglichkeiten:
- Wenn der Rückstapel kurz ist, kann der Nutzer die App schließen und durch Drücken der Ein-/Aus-Taste zum Zifferblatt-Startbildschirm zurückkehren.
- Wenn Sie möchten, dass der Nutzer den Rückstapel durchläuft, können Sie die Ansicht in ein
SwipeDismissFrameLayout
-Objekt einschließen, das das Wischen am Bildschirmrand unterstützt. Das Wischen am Rand ist aktiviert, wenn die Ansicht oder ihre untergeordneten Elementetrue
von einemcanScrollHorizontally()
-Aufruf zurückgeben. Beim Wischen am Rand kann der Nutzer die Ansicht schließen, indem er von den linken 10% des Displays nach rechts wischt, anstatt irgendwo in der Ansicht.
In den folgenden Beispielen wird gezeigt, wie eine Ansicht in ein SwipeDismissFrameLayout
-Objekt eingefügt wird:
<androidx.wear.widget.SwipeDismissFrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/swipe_dismiss_root" > <TextView android:id="@+id/test_content" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="Swipe me to dismiss me." /> </androidx.wear.widget.SwipeDismissFrameLayout>
Kotlin
activity?.findViewById<SwipeDismissFrameLayout>(R.id.swipe_dismiss_root)?.apply { addCallback(object : SwipeDismissFrameLayout.Callback() { override fun onDismissed(layout: SwipeDismissFrameLayout) { layout.visibility = View.GONE } }) }
Java
SwipeDismissFrameLayout testLayout = (SwipeDismissFrameLayout) activity.findViewById(R.id.swipe_dismiss_root); testLayout.addCallback(new SwipeDismissFrameLayout.Callback() { @Override public void onDismissed(SwipeDismissFrameLayout layout) { layout.setVisibility(View.GONE); } } );
Nicht empfohlen: Wischen zum Schließen deaktivieren
Wir empfehlen im Allgemeinen nicht, das Wischen zum Schließen zu deaktivieren, da Nutzer davon ausgehen, dass sie jeden Bildschirm durch Wischen schließen können. In Ausnahmefällen können Sie das Standarddesign in einer
Stilressource erweitern und das Attribut android:windowSwipeToDismiss
auf false
festlegen, wie im folgenden Codebeispiel gezeigt:
<resources> <style name="AppTheme" parent="@android:style/Theme.DeviceDefault"> <item name="android:windowSwipeToDismiss">false</item> </style> </resources>
Sie können die Nutzer dann bei der ersten Verwendung Ihrer App darüber informieren, dass sie die App durch Drücken der Ein-/Aus-Taste beenden können.
Schließen mit der Ein/Aus-Taste
Wenn Sie die Ein-/Aus-Taste drücken, wird ein Ereignis vom Typ „Power Key“ gesendet. Daher können Sie die Ein‑/Aus-Taste nicht als Schaltfläche „Zurück“ oder für die Navigation im Allgemeinen verwenden.
Wenn die Ein‑/Aus-Taste gedrückt wird, kehrt der Nutzer zum Startbildschirm des Zifferblatts zurück. Bitte beachten Sie die folgenden beiden Ausnahmen:
- Wenn sich der Nutzer in einem Eingabemethoden-Editor (IME) befindet, z. B. in einem Bildschirm für die Handschrifterkennung, wird der IME durch Drücken der Schaltfläche geschlossen und der Nutzer wird zur App zurückgeleitet.
- Wenn sich der Nutzer auf dem Zifferblatt befindet, wird durch Drücken der Hardwaretaste der App Launcher geöffnet.
Hinweis: Wenn die Ein‑/Aus-Taste gedrückt wird, gibt die Methode
isFinishing()
der Klasse Activity
nicht true
zurück und Sie können das Schlüsselereignis nicht abfangen.
Weitere Informationen finden Sie unter Navigation.