Kullanıcılar, Wear OS etkinliğinden çıkmak için ekranı soldan sağa kaydırabilir. Uygulamada yatay kaydırma varsa kullanıcı, içeriğin kenarına gidip soldan sağa kaydırarak çıkar. Güç düğmesine basıldığında da kullanıcı saat yüzüne geri döner.
Kapatmak için kaydırma hareketi
Kullanıcılar, mevcut ekranı kapatmak için soldan sağa kaydırır. Bu nedenle, aşağıdakileri kullanmanızı öneririz:
- Dikey düzenler
- İçerik kapsayıcıları
Ayrıca uygulamanızda yatay kaydırma hareketleri olmamasını öneririz.
Etkinliği kapatma
Etkinlikler, kaydırarak kapatma özelliğini otomatik olarak destekler. Bir etkinliği soldan sağa kaydırdığınızda etkinlik kapatılır ve uygulama geri yığınında aşağı doğru gider.
Parçayı kapatma
Parçalarda kaydırarak kapatma özelliğini desteklemek için parçayı içeren görünümü
SwipeDismissFrameLayout sınıfına sarmalamanız gerekir. Parçaları kullanıp kullanmamaya karar verirken bu durumu göz önünde bulundurun. Aşağıdaki örnekte gösterildiği gibi SwipeDismissFrameLayout sınıfını kullanın:
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 kullanırken kaydırarak kapatma hareketini desteklemek için
FragmentManager.add
yerine
FragmentManager.replace
kullanın.
Bu, önceki parçanızın kaydırılırken üstteki parçanın altında oluşturulmasını sağlar.
Yatay kaydırılabilir görünümler
Bazı durumlarda (ör. kaydırmayı destekleyen bir harita içeren görünümde) kullanıcı arayüzü yatay kaydırmayı engelleyemez. Bu senaryoda iki seçenek vardır:
- Geriye gitme yığını kısaysa kullanıcı, güç düğmesine basarak uygulamayı kapatabilir ve saat yüzü ana ekranına dönebilir.
- Kullanıcının geri yığınına gitmesini istiyorsanız görünümü, kenar kaydırmayı destekleyen bir
SwipeDismissFrameLayoutnesnesine sarmalayabilirsiniz. Görünüm veya alt öğeleri birtrueçağrısındancanScrollHorizontally()döndüğünde kenardan kaydırma etkinleştirilir. Kenardan kaydırma, kullanıcının görünümün herhangi bir yerinden kaydırmak yerine ekranın en solundaki% 10'luk bölümden kaydırarak görünümü kapatmasına olanak tanır.
Aşağıdaki örneklerde, bir görünümün SwipeDismissFrameLayout nesnesine nasıl sarmalanacağı gösterilmektedir:
<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 kaydırma özelliğini devre dışı bırakma
Kullanıcılar, herhangi bir ekranı kaydırarak kapatmayı beklediğinden kaydırarak kapatma özelliğini devre dışı bırakmanızı genellikle önermeyiz. İstisnai bir durumda, varsayılan temayı
stil kaynağında genişletebilir ve aşağıdaki kod örneğinde gösterildiği gibi android:windowSwipeToDismiss özelliğini false olarak ayarlayabilirsiniz:
<resources> <style name="AppTheme" parent="@android:style/Theme.DeviceDefault"> <item name="android:windowSwipeToDismiss">false</item> </style> </resources>
Ardından, uygulamanızı ilk kez kullanan kullanıcılara güç düğmesine basarak uygulamadan çıkabileceklerini bildirebilirsiniz.
Güç düğmesiyle kapatma
Fiziksel güç düğmesine basıldığında güç tuşu etkinliği gönderilir. Bu nedenle, güç düğmesini geri düğmesi olarak veya genel olarak gezinmek için kullanamazsınız.
Güç düğmesine basıldığında kullanıcı saat yüzü ana ekranına döner. İki istisna söz konusudur:
- Kullanıcı, el yazısı tanıma ekranı gibi bir giriş yöntemi düzenleyicisindeyse (IME) düğmeye basıldığında IME kapatılır ve kullanıcı uygulamaya geri döner.
- Kullanıcı saat yüzündeyken donanım düğmesine basıldığında uygulama başlatıcı açılır.
Güç düğmesine basıldığında Activity sınıfının
isFinishing() yönteminin true döndürmediğini ve önemli etkinlikleri yakalayamayacağınızı unutmayın.
Daha fazla bilgi için Gezinme konusuna bakın.