Wear'da tam ekran etkinliklerden çıkma

Kullanıcılar Wear OS etkinliğinden çıkmak için soldan sağa doğru kaydırabilir. Uygulama yatay kaydırma yapıyorsa kullanıcı kenara giderek uygulamadan çıkar dokunun ve soldan sağa kaydırın. Güç düğmesine basıldığında kullanıcı da kadrana döner.

Kapatmak için kaydırma hareketi

Kullanıcılar geçerli ekranı kapatmak için soldan sağa kaydırır. Bu nedenle, şunları kullanmanızı öneririz:

  • Dikey düzenler
  • İçerik kapsayıcıları

Ayrıca, uygulamanızın mobil cihazlarda Yatay kaydırma hareketleri.

Bir etkinliği kapatma

Etkinlikler, kapatmak için hızlıca kaydırmayı otomatik olarak destekler. Etkinliği kaydırma etkinlik, uygulamanın ve uygulamanın reddedilmesine neden olur. aşağı gider gösterir.

Parçayı kapatma

Parçalarda hızlıca kaydırmak için kaydırmayı desteklemek üzere bir bileşen içeren görünüm SwipeDismissFrameLayout sınıfı. Bunu göz önünde bulundurun karar verirken göz önünde bulundurmanız gerekir. Şunu kullanın: SwipeDismissFrameLayout sınıfı aşağıdaki örnekte gösterildiği gibidir:

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;
    }
}

Not: Etkinliğinizde parçaları kullandığınızda FragmentManager.add yerine FragmentManager.replace özelliğini desteklemesi gerekir. Bu, önceki parçanızın, hâlâ üst parçanın altında oluşturulduğunda kaçırdınız.

Yatay kaydırılabilir görünümler

Kaydırmayı destekleyen bir harita içeren görünümde, yatay kaydırmayı destekleyen bir görünümde kullanıcı arayüzü yatay kaydırmayı engelleyemiyor. Burada iki seçenek vardır:

  • Arka grup kısaysa kullanıcı uygulamayı kapatıp geri dönebilir saat kadranın ana ekranına bağlayabilirsiniz.
  • Kullanıcının arka kısma gitmesini istiyorsanız görünümü kaydırabilirsiniz. kenar destekleyen bir SwipeDismissFrameLayout nesnesinde kaydırın. Görünüm veya alt öğeleri geri döndüğünde kenardan kaydırma etkinleştirilir true, kalkış: canScrollHorizontally() araması. Kenardan kaydırma, kullanıcının ekranın en soldan% 10'luk kısmıyla kaydırmak yerine görünümü kapatmak için herhangi bir yeri görebilirsiniz.

Aşağıdaki örneklerde, bir görünümün SwipeDismissFrameLayout nesne:

<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);
    }
  }
);

Önerilmez: Kapatmak için hızlıca kaydırmayı devre dışı bırakın

Kullanıcı sayfayı kapatmak için hızlıca kaydırma özelliğini devre dışı bırakmanızı her ekranı hızlıca kaydırmayı bekler. Olağanüstü bir durumda, varsayılan temayı içinde stil kaynağı ve android:windowSwipeToDismiss özelliğini aşağıdaki kod örneğinde gösterildiği gibi false olarak değiştirin:

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

Daha sonra kullanıcıları uygulamanızı ilk kez kullandıklarında bilgilendirebilirsiniz güç düğmesine basarak uygulamadan çıkabilmelerini sağlayın.

Güç düğmesiyle kapatma

Fiziksel güç düğmesine basıldığında güç tuşu gönderilir unutmayın. Bu nedenle, güç düğmesini arka taraf olarak kullanamazsınız genel olarak gezinmeye olanak veriyor.

Basıldığında güç düğmesi, kullanıcıyı saat kadranı ana ekranına geri döndürür. İki istisna vardır:

  • Kullanıcı, el yazısı gibi bir Giriş Yöntemi Düzenleyici'de (IME) ise tanıma ekranı, düğmeye basarak IME'yi kapatır ve kullanıcıyı uygulamaya geri döndürür.
  • Kullanıcı kadrana bakıyorsa donanım düğmesine basma Uygulama başlatıcıyı açar.

Not: Güç düğmesine basıldığında, Activity sınıfının isFinishing() yöntemi true değerini döndürmez ve önemli etkinliğe müdahale edemezsiniz.

Daha fazla bilgi için bkz. Rota izleme.