الخروج من الأنشطة بملء الشاشة على Wear

يمكن للمستخدم الخروج من نشاط 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.add بدلاً من FragmentManager.replace لدعم إيماءة التمرير السريع للإغلاق. يساعد هذا في ضمان عرض الجزء السابق أسفل الجزء العلوي أثناء وسارِع بعيدًا.

طرق العرض الأفقية القابلة للتمرير

في بعض الحالات، كما هو الحال في طريقة عرض تشتمل على خريطة تدعم التحريك، لا يمكن لواجهة المستخدم منع التمرير الأفقي. في هذه الدورة، هناك خياران:

  • إذا كانت حزمة الخلفية قصيرة، يمكن للمستخدم إغلاق التطبيق والرجوع إلى الشاشة الرئيسية لخلفية شاشة الساعة عن طريق الضغط على زر التشغيل.
  • إذا كنت تريد أن ينتقل المستخدم لأسفل الحزمة الخلفية، يمكنك التفاف العرض في كائن SwipeDismissFrameLayout، الذي يتوافق مع الحافة التمرير السريع. يتم تفعيل التمرير السريع عند الحافة عند عودة العرض أو عناصره الثانوية. true من مكالمة canScrollHorizontally(). يتيح التمرير السريع من الحافة للمستخدم بالتمرير سريعًا من أقصى اليسار إلى 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>

يمكنك بعد ذلك إعلام المستخدمين بأول استخدام لهم لتطبيقك حتى يتمكنوا من الخروج من التطبيق بالضغط على زر التشغيل.

الإغلاق باستخدام زر التشغيل

عند الضغط على زر التشغيل، يتم إرسال مفتاح التشغيل فعالية. لذلك، لا يمكنك استخدام زر التشغيل كخلفية أو للتنقل بشكل عام.

عند الضغط على زر التشغيل، يعيد زر التشغيل المستخدم إلى الشاشة الرئيسية لخلفية شاشة الساعة. هناك استثناءان:

  • إذا كان المستخدم يستخدم محرر أسلوب الإدخال (IME)، مثل الكتابة بخط اليد شاشة التعرف، الضغط على الزر يُغلق أداة IME ويُعيد المستخدم إلى التطبيق.
  • إذا كان المستخدم أمام خلفية شاشة الساعة، يجب الضغط على زر الجهاز. لفتح مشغّل التطبيقات.

ملاحظة: عند الضغط على زر التشغيل، تفعل الطريقة isFinishing() للفئة Activity لا تعرض true، ولا يمكنك اعتراض الحدث الرئيسي.

لمزيد من المعلومات، يُرجى مراجعة التنقل.