Kullanıcılar, soldan sağa kaydırarak Wear OS etkinliklerinden çıkabilir. Uygulamada yatay kaydırma varsa kullanıcı, içeriğin kenarına gidip soldan sağa kaydırarak çıkar. Güç düğmesine basarak da kullanıcıyı kadrana döndürebilirsiniz.
Kapatmak için kaydırma hareketi
Kullanıcılar mevcut ekranı kapatmak için soldan sağa kaydırırlar. Bu nedenle, aşağıdakileri kullanmanızı öneririz:
- Dikey düzenler
- İçerik kapsayıcıları
Ayrıca uygulamanızın yatay kaydırma hareketleri içermemesini de öneririz.
Etkinliği kapatma
Etkinlikler, kaydırarak kapatma özelliğini otomatik olarak destekler. Bir etkinliği soldan sağa kaydırmak, etkinliğin kapatılmasına neden olur ve uygulama geri yığında aşağı doğru ilerler.
Parçaları kapatma
Parçalarda kaydırarak kapatma özelliğini desteklemek için parça içeren görünümü
SwipeDismissFrameLayout
sınıfına sarmanız gerekir. Parça kullanıp kullanmayacağınıza karar verirken bunu dikkate alın. 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 kullandığınızda, kapatmak için kaydırma hareketini desteklemek amacıyla FragmentManager.replace
yerine FragmentManager.add
kullanın.
Bu sayede, önceki parçanız kaydırıldığında üst parçanın altında oluşturulur.
Yatay kaydırılabilir görünümler
Yakınlaştırma/uzaklaştırma özelliğini destekleyen bir harita içeren görünümlerde olduğu gibi bazı durumlarda kullanıcı arayüzü yatay kaydırmayı engelleyemez. Bu senaryoda iki seçenek vardır:
- Geri yığın kısaysa kullanıcı, uygulamayı kapatabilir ve güç düğmesine basarak kadran ana ekranına dönebilir.
- Kullanıcının arka yığına inmesini istiyorsanız görünümü kenar kaydırma özelliğini destekleyen bir
SwipeDismissFrameLayout
nesnesine sarabilirsiniz. Görünüm veya alt öğeleri birtrue
çağrısından döndürdüğünde kenar kaydırma etkinleştirilircanScrollHorizontally()
. Kenar kaydırma, kullanıcının görünümün herhangi bir yerinden değil, ekranın en sol% 10'undan 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 sarmalandığı 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: Kaydırarak kapatma özelliğini devre dışı bırakma
Kullanıcılar ekranları kaydırarak kapatmayı beklediğinden, kaydırarak kapatma özelliğini devre dışı bırakmanızı genellikle önermeyiz. İstisnai durumlarda,
stil kaynağında varsayılan temayı 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üç anahtarı etkinliği gönderilir. Bu nedenle, güç düğmesini geri düğmesi veya genel olarak gezinme için kullanamazsınız.
Güç düğmesine basıldığında kullanıcı, kadran ana ekranına geri döner. İki istisna vardır:
- Kullanıcı, el yazısı tanıma ekranı gibi bir Giriş Yöntemi Düzenleyici'sinde (IME)yse düğmeye basıldığında IME kapatılır ve kullanıcı uygulamaya geri döner.
- Kullanıcı saat yüzündeyse 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 etkinliği durduramayacağınızı unutmayın.
Daha fazla bilgi için Gezinme başlıklı makaleyi inceleyin.