Nutzer können eine Wear OS-Aktivität beenden, indem sie von links nach rechts wischen. Wenn die App horizontales Scrollen unterstützt, beenden Nutzer sie, indem sie zum Rand des Inhalts navigieren und dann von links nach rechts wischen. Durch Drücken der Ein/Aus-Taste kehren Nutzer auch zum Zifferblatt zurück.
Die Wischgeste zum Schließen
Nutzer wischen von links nach rechts, um den aktuellen Bildschirm zu schließen. Wir empfehlen daher, Folgendes zu verwenden:
- Vertikale Layouts
- Content-Container
Außerdem empfehlen wir, dass Ihre App keine horizontalen Wischgesten enthält.
Aktivität schließen
Aktivitäten unterstützen automatisch die Wischgeste zum Schließen. Wenn Nutzer eine Aktivität von links nach rechts wischen, wird sie geschlossen und die App navigiert im Back-Stack nach unten.
Fragment schließen
Wenn Sie die Wischgeste zum Schließen in Fragmenten unterstützen möchten, müssen Sie die
Ansicht, die das Fragment enthält, in die
SwipeDismissFrameLayout Klasse einfügen. Berücksichtigen Sie dies
bei der Entscheidung, ob Sie Fragmente verwenden möchten. Verwenden Sie die
SwipeDismissFrameLayout Klasse wie im folgenden Beispiel gezeigt:
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 Fragmente in Ihrer Aktivität verwenden, verwenden Sie
FragmentManager.add
anstelle von
FragmentManager.replace
, um die Wischgeste zum Schließen zu unterstützen.
So wird dafür gesorgt, dass Ihr vorheriges 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 horizontales Wischen nicht verhindern. In diesem Fall haben Sie zwei Möglichkeiten:
- Wenn der Back-Stack kurz ist, können Nutzer die App schließen und zum Startbildschirm des Zifferblatts zurückkehren indem sie die Ein/Aus-Taste drücken.
- Wenn Nutzer im Back-Stack nach unten navigieren sollen, können Sie die Ansicht
in ein
SwipeDismissFrameLayoutObjekt einfügen, das das Wischen vom Rand unterstützt. Das Wischen vom Rand wird aktiviert, wenn die Ansicht oder ihre untergeordneten Elementetruevon einemcanScrollHorizontally()-Aufruf zurückgeben. Mit dem Wischen vom Rand können Nutzer die Ansicht schließen, indem sie von den linken 10% des Bildschirms wischen, anstatt von einer beliebigen Stelle in der Ansicht.
In den folgenden Beispielen wird gezeigt, wie Sie eine Ansicht in ein
SwipeDismissFrameLayout Objekt einfügen:
<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: Wischgeste zum Schließen deaktivieren
Wir empfehlen im Allgemeinen nicht, die Wischgeste zum Schließen zu deaktivieren, da Nutzer
erwarten, dass sie jeden Bildschirm mit einer Wischgeste schließen können.
In einem Ausnahmefall können Sie das Standarddesign in einer Stilressource erweitern und das Attribut android:windowSwipeToDismiss auf false setzen, 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 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
Durch Drücken der physischen Ein/Aus-Taste wird ein Ereignis für die Ein/Aus-Taste gesendet. Daher können Sie die Ein/Aus-Taste nicht als Zurück Taste oder für die allgemeine Navigation verwenden.
Wenn die Ein/Aus-Taste gedrückt wird, kehren Nutzer zum Startbildschirm des Zifferblatts zurück. Hiervon gibt es zwei Ausnahmen:
- Wenn sich Nutzer in einem Eingabemethoden-Editor (Input Method Editor, IME) befinden, z. B. auf einem Bildschirm zur Handschrifterkennung wird durch Drücken der Taste der IME geschlossen und Nutzer kehren zur App zurück.
- Wenn sich Nutzer auf dem Zifferblatt befinden, wird durch Drücken der Hardwaretaste der App-Launcher geöffnet.
Hinweis: Wenn die Ein/Aus-Taste gedrückt wird, gibt die
isFinishing() Methode der Activity Klasse
nicht true zurück und Sie können das Tastenereignis nicht abfangen.
Weitere Informationen finden Sie unter Navigation.