उपयोगकर्ता, बाईं से दाईं ओर स्वाइप करके Wear OS गतिविधि से बाहर निकल सकता है. अगर ऐप्लिकेशन में हॉरिज़ॉन्टल स्क्रोलिंग की सुविधा है, तो उपयोगकर्ता कॉन्टेंट के किनारे पर नेविगेट करके और फिर बाईं से दाईं ओर स्वाइप करके ऐप्लिकेशन से बाहर निकलता है. पावर बटन दबाने पर भी, उपयोगकर्ता को स्मार्टवॉच की होम स्क्रीन पर वापस ले जाया जाता है.
खारिज करने के लिए स्वाइप करने का जेस्चर
मौजूदा स्क्रीन को बंद करने के लिए, उपयोगकर्ता बाईं से दाईं ओर स्वाइप करते हैं. इसलिए, हमारा सुझाव है कि आप इनका इस्तेमाल करें:
- वर्टिकल लेआउट
- कॉन्टेंट कंटेनर
हमारा यह भी सुझाव है कि आपके ऐप्लिकेशन में, हॉरिज़ॉन्टल स्वाइप करने के जेस्चर शामिल न हों.
किसी गतिविधि को खारिज करना
गतिविधियों को स्वाइप करके हटाने की सुविधा अपने-आप काम करती है. किसी गतिविधि को बाईं से दाईं ओर स्वाइप करने पर, वह गतिविधि बंद हो जाती है और ऐप्लिकेशन, बैक स्टैक पर नीचे की ओर नेविगेट हो जाता है.
फ़्रैगमेंट को खारिज करना
फ़्रेगमेंट में स्वाइप करके हटाने की सुविधा इस्तेमाल करने के लिए, आपको
SwipeDismissFrameLayout
क्लास में, फ़्रेगमेंट वाले व्यू को रैप करना होगा. फ़्रैगमेंट का इस्तेमाल करने का फ़ैसला लेते समय, इस बात को ध्यान में रखें. SwipeDismissFrameLayout
क्लास का इस्तेमाल करें, जैसा कि इस उदाहरण में दिखाया गया है:
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; } }
ध्यान दें: अपनी ऐक्टिविटी में फ़्रैगमेंट का इस्तेमाल करते समय, 'स्वाइप करके हटाएं' जेस्चर के साथ काम करने के लिए, FragmentManager.replace
के बजाय FragmentManager.add
का इस्तेमाल करें.
इससे यह पक्का करने में मदद मिलती है कि आपका पिछला फ़्रैगमेंट, सबसे ऊपर मौजूद फ़्रैगमेंट के नीचे रेंडर हो, जबकि उसे स्वाइप किया जा रहा हो.
हॉरिज़ॉन्टल स्क्रोल किए जा सकने वाले व्यू
कुछ मामलों में, जैसे कि पैन करने की सुविधा वाले मैप वाले व्यू में, यूज़र इंटरफ़ेस, हॉरिज़ॉन्टल स्वाइप को रोक नहीं सकता. इस मामले में, आपके पास दो विकल्प हैं:
- अगर बैक स्टैक छोटा है, तो उपयोगकर्ता ऐप्लिकेशन को खारिज कर सकता है और पावर बटन को दबाकर, स्मार्टवॉच की होम स्क्रीन पर वापस जा सकता है.
- अगर आपको उपयोगकर्ता को बैक स्टैक पर ले जाना है, तो व्यू को
SwipeDismissFrameLayout
ऑब्जेक्ट में रैप करें. यह ऑब्जेक्ट, किनारे पर स्वाइप करने की सुविधा के साथ काम करता है. जब व्यू या उसके चाइल्ड व्यू,canScrollHorizontally()
कॉल से वापस आते हैं, तब किनारे पर स्वाइप करने की सुविधा चालू हो जाती है.true
किनारे पर स्वाइप करने की सुविधा की मदद से, उपयोगकर्ता व्यू को स्क्रीन के सबसे बाईं ओर 10% हिस्से से स्वाइप करके खारिज कर सकता है.
यहां दिए गए उदाहरणों में, किसी व्यू को
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); } } );
सुझाया नहीं गया: 'हटाएं' के लिए स्वाइप करने की सुविधा बंद करना
आम तौर पर, हम स्वाइप करके हटाने की सुविधा बंद करने का सुझाव नहीं देते, क्योंकि उपयोगकर्ता को उम्मीद होती है कि वह स्वाइप करके किसी भी स्क्रीन को हटा सकता है. किसी खास मामले में,
स्टाइल रिसॉर्स में डिफ़ॉल्ट थीम को बड़ा किया जा सकता है और android:windowSwipeToDismiss
एट्रिब्यूट को false
पर सेट किया जा सकता है. इसका उदाहरण नीचे दिए गए कोड सैंपल में दिया गया है:
<resources> <style name="AppTheme" parent="@android:style/Theme.DeviceDefault"> <item name="android:windowSwipeToDismiss">false</item> </style> </resources>
इसके बाद, उपयोगकर्ताओं को ऐप्लिकेशन इस्तेमाल करने के दौरान यह जानकारी दी जा सकती है कि वे पावर बटन दबाकर ऐप्लिकेशन से बाहर निकल सकते हैं.
पावर बटन से खारिज करना
फ़िज़िकल पावर बटन को दबाने पर, पावर बटन का इवेंट भेजा जाता है. इसलिए, पावर बटन का इस्तेमाल 'वापस जाएं' बटन या सामान्य नेविगेशन के लिए नहीं किया जा सकता.
पावर बटन दबाने पर, उपयोगकर्ता को स्मार्टवॉच की होम स्क्रीन पर वापस ले जाया जाता है. इसके दो अपवाद हैं:
- अगर उपयोगकर्ता इनपुट के तरीके के संपादक (आईएमई) में है, जैसे कि लिखावट की पहचान करने वाली स्क्रीन, तो बटन दबाने पर आईएमई बंद हो जाता है और उपयोगकर्ता को ऐप्लिकेशन पर वापस ले जाया जाता है.
- अगर उपयोगकर्ता स्मार्टवॉच की होम स्क्रीन पर है, तो हार्डवेयर बटन को दबाने पर ऐप्लिकेशन लॉन्चर खुलता है.
ध्यान दें कि पावर बटन दबाने पर, Activity
क्लास का
isFinishing()
तरीका, true
नहीं दिखाता. साथ ही, मुख्य इवेंट को इंटरसेप्ट नहीं किया जा सकता.
ज़्यादा जानकारी के लिए, नेविगेशन देखें.