Vollbildaktivitäten auf Wear beenden

<ph type="x-smartling-placeholder">

Nutzer können eine Wear OS-Aktivität beenden, indem sie von links nach rechts wischen. Wenn horizontales Scrollen möglich ist, schließt der Nutzer den Vorgang, indem er zum Rand navigiert. des Inhalts und wische dann von links nach rechts. Durch Drücken der Ein/Aus-Taste kehrt der Nutzer zum Zifferblatt zurück.

Mit der Wischgeste zum Schließen

Nutzer wischen von links nach rechts, um den aktuellen Bildschirm zu schließen. Aus diesem Grund empfehlen wir Folgendes:

  • Vertikale Layouts
  • Inhaltscontainer

Wir empfehlen außerdem, dass Ihre App keine horizontale Wischgesten.

Aktivität schließen

Aktivitäten unterstützen automatisch das Schließen durch Wischen. Über eine Aktivität wischen von links nach rechts zum Schließen der Aktivität führt und die App navigiert im nach unten Back-Stack.

Fragment schließen

Damit das Schließen durch Wischen in Fragmenten unterstützt wird, müssen Sie den die fragmentierte Ansicht enthält. <ph type="x-smartling-placeholder"></ph> SwipeDismissFrameLayout. Dies sollten Sie berücksichtigen wenn Sie sich für Fragmente entscheiden. Verwenden Sie die Methode SwipeDismissFrameLayout, 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 in Ihrer Aktivität Fragmente verwenden, nutzen Sie FragmentManager.add statt FragmentManager.replace um die Wischgeste zum Schließen zu unterstützen. So wird sichergestellt, dass das vorherige Fragment unter dem obersten Fragment gerendert wird, während es weggewischt.

Horizontale scrollbare Ansichten

In einigen Fällen, z. B. in einer Ansicht mit einer Karte, die Schwenken unterstützt, die Benutzeroberfläche das horizontale Wischen nicht verhindern kann. In dieser haben Sie zwei Möglichkeiten:

  • Wenn der Back-Stack kurz ist, kann der Nutzer die App schließen und zur App zurückkehren. zum Startbildschirm, indem Sie die Ein/Aus-Taste drücken.
  • Wenn Sie möchten, dass der Nutzer den Back Stack hinunterläuft, können Sie die Ansicht zusammenfassen. in einem SwipeDismissFrameLayout-Objekt, das Edge unterstützt wischen. Das Wischen über den Rand ist aktiviert, wenn die Ansicht oder die untergeordneten Elemente wieder aufgerufen werden true von einem <ph type="x-smartling-placeholder"></ph> canScrollHorizontally()-Anruf. Durch Wischen am Rand kann der Nutzer Schließen Sie die Ansicht, indem Sie vom linken Rand des Bildschirms von 10% aus wischen, überall in der Ansicht.

Die folgenden Beispiele zeigen, wie Sie eine Ansicht Objekt SwipeDismissFrameLayout:

<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 raten davon ab, die Funktion zum Schließen durch Wischen zu deaktivieren, alle Bildschirme durch Wischen geschlossen werden. In einem Ausnahmefall können Sie das Standarddesign in einem Stilressource und legen Sie das Attribut android:windowSwipeToDismiss auf false, wie im folgenden Codebeispiel gezeigt:

<resources>
  <style name="AppTheme" parent="@android:style/Theme.DeviceDefault">
    <item name="android:windowSwipeToDismiss">false</item>
  </style>
</resources>

Du kannst die Nutzer dann über die erste Verwendung deiner App informieren. dass sie die App durch Drücken der Ein/Aus-Taste beenden können.

Mit Ein/Aus-Taste schließen

Durch Drücken der physischen Ein/Aus-Taste wird eine Ein/Aus-Taste gesendet . Daher können Sie die Ein/Aus-Taste nicht als Zurück-Taste verwenden, Schaltfläche oder für die Navigation im Allgemeinen.

Durch Drücken der Ein/Aus-Taste 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 einer handschriftlichen Eingabe Bildschirmerkennung, drücke die Taste schließt den IME und leitet den Nutzer zur App zurück.
  • Wenn der Nutzer auf dem Zifferblatt ist und die Hardwaretaste drückt öffnet den App Launcher.

Hinweis: Wenn die Ein/Aus-Taste gedrückt wird, Die isFinishing()-Methode der Activity-Klasse keine true zurückgeben und das Schlüsselereignis nicht abgefangen werden kann.

Weitere Informationen finden Sie unter Navigation: