نافذة ضمن النافذة

"نافذة ضمن النافذة" (PiP) هي نوع من وضع النوافذ المتعددة المصمّمة للأنشطة التي يتم فيها تشغيل الفيديو في وضع ملء الشاشة. فهو يتيح للمستخدم مشاهدة مقطع فيديو في نافذة صغيرة مثبتة في زاوية من الشاشة أثناء التنقل بين التطبيقات أو تصفح المحتوى على الشاشة الرئيسية.

الشكل 1: يمكن للمستخدمين مواصلة تجربة الفيديو حتى عند عدم استخدام تطبيقك

الخلاصات

  • يُرجى التأكّد من إخفاء عناصر واجهة المستخدم ومواصلة تشغيل الفيديو عندما يكون النشاط في وضع "نافذة ضمن النافذة".
  • إيقاف تغيير الحجم بسلاسة للمحتوى من غير الفيديوهات.
  • تقدّم أنشطة تشغيل الفيديو ذات الحد الأدنى من واجهة المستخدم أفضل تجربة للمستخدم.
  • تجنَّب عرض أي معلومات باستثناء محتوى الفيديو.

إتاحة ميزة "نافذة ضمن النافذة" في تطبيقك

لا يتيح النظام تلقائيًا استخدام ميزة "نافذة ضمن النافذة" (PIP) للتطبيقات، ويجب تقديم بيان لإتاحة هذه الميزة.

تظهر نافذة "نافذة ضمن النافذة" في أعلى طبقة من الشاشة، في زاوية يختارها النظام.

عناصر التحكّم

يوفّر Android تلقائيًا عناصر تحكّم في "نافذة ضمن النافذة" لإغلاق النافذة وتوسيعها لمرة أخرى إلى وضع ملء الشاشة والإعدادات وتشغيل الوسائط. يمكن لتطبيقك إضافة إجراءات مخصّصة ومواد عرض رموز مناسبة للسماح للمستخدمين بالتفاعل مع محتوى "نافذة ضمن النافذة".

ويمكن للمستخدم عرض عناصر التحكّم هذه من قائمة نافذة "نافذة ضمن النافذة" من خلال النقر على النافذة على جهاز جوّال أو اختيار القائمة من جهاز التحكّم عن بُعد في التلفزيون. إذا كان التطبيق يتضمّن جلسة وسائط نشطة، سيتم أيضًا عرض عناصر التحكّم في التشغيل والإيقاف المؤقت والتالي والسابق. تعرَّف على كيفية إضافة عناصر التحكم هذه.

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

الشكل 2: عناصر التحكّم التلقائية في "نافذة ضمن النافذة"


الشكل 3: مثال على عناصر التحكّم المخصّصة في "نافذة ضمن النافذة"

الانتقالات

الدخول السلس إلى الصور المتحركة في وضع "نافذة ضمن النافذة" (PiP)

يؤدي تشغيل وضع "نافذة ضمن النافذة" (PiP) إلى تقليل النشاط الحالي من وضع ملء الشاشة إلى نافذة صغيرة، ما يؤدي إلى مواصلة عرض المحتوى بدون تركيب أي واجهة مستخدم.

أضاف نظام التشغيل Android 12 تحسينات تجميلية مهمة على الانتقالات المتحركة بين النوافذ في وضع ملء الشاشة ونافذة "نافذة ضمن النافذة". نوصي بشدة بتنفيذ جميع التغييرات القابلة للتطبيق، فبعد الانتهاء من ذلك، سيتم توسيع نطاق هذه التغييرات تلقائيًا لتتلاءم مع الشاشات الكبيرة مثل الهواتف القابلة للطي والأجهزة اللوحية بدون الحاجة إلى إجراء أي جهد إضافي.

وإذا كان تطبيقك لا يتضمّن هذه التحديثات القابلة للتطبيق، ستظل عمليات الانتقال في وضع "نافذة ضمن النافذة" مفعّلة، ولكن الرسوم المتحركة ستكون أقلّ دقة. على سبيل المثال، عند الانتقال من وضع ملء الشاشة إلى وضع "نافذة ضمن النافذة" (PiP)، تختفي نافذة "نافذة ضمن النافذة" (PiP) خلال عملية الانتقال قبل ظهورها مجددًا عند اكتمال عملية الانتقال.

بدءًا من نظام التشغيل Android 12، توفّر علامة PictureInPictureParams.Builder.setAutoEnterEnabled(true) صورًا متحركة أكثر سلاسة للانتقال إلى محتوى الفيديو في وضع "نافذة ضمن النافذة" باستخدام التنقّل بالإيماءات، مثلاً عند التمرير سريعًا للأعلى من وضع ملء الشاشة للوصول إلى الشاشة الرئيسية. ننصحك بهذا الإجراء إذا كان تطبيقك يندرج ضمن فئة التطبيقات ENTERTAINMENT أو COMMUNICATION أو VIDEO_PLAYER.

وإذا كان تطبيقك لا يتضمّن هذا التغيير، ستظلّ الانتقالات في وضع "نافذة ضمن النافذة" مع التنقّل بالإيماءات متاحة ولكن الرسوم المتحركة تكون أقلّ تحسينًا. يعرض الفيديو 1 مثالاً على ذلك: تتقلص النافذة وتتحول إلى رمز التطبيق وتختفي، ثم تظهر مرة أخرى عند اكتمال عملية النقل.

الفيديو 1: تجربة انتقال أقل جودة عندما لا يتم تنفيذ setAutoEnterEnabled في "نافذة ضمن النافذة" بشكل صحيح

يعرض الفيديو 2 مثالاً على عملية النقل نفسها، ولكن مع إضافة setAutoEnterEnabled إلى التطبيق.

الفيديو 2: تجربة انتقال سلسة

مرئيات فيديو سلسة

عندما طرحنا ميزة "نافذة ضمن النافذة" في نظام التشغيل Android 8.0، أشارت العلامة sourceRectHint إلى قسم النشاط الذي يظهر بعد الانتقال إلى وضع "نافذة ضمن النافذة"، مثل حدود مشاهدة الفيديو في مشغّل الفيديو. بدءًا من نظام التشغيل Android 12، يستخدم نظام التشغيل sourceRectHint لتوفير صور متحركة أكثر سلاسة عند الدخول في وضع "نافذة ضمن النافذة" والخروج منه.

وإذا كان تطبيقك لا يوفّر سمة sourceRectHint مناسبة، ستظلّ الانتقالات في وضع "نافذة ضمن النافذة" متاحة، ولكن ستكون الصور المتحركة أقلّ تحسينًا. على سبيل المثال، يعرض الفيديو 3 مثالاً أقل تحسينًا للانتقال من وضع ملء الشاشة إلى وضع "نافذة ضمن النافذة": بعد تقليص نافذة ملء الشاشة إلى وضع "نافذة ضمن النافذة"، تصبح الصورة مغطاة بتراكب أسود قبل إظهار الفيديو من جديد.

الفيديو 3: تجربة انتقال أقل جودة عندما لا يتم تنفيذ sourceRectHint في "نافذة ضمن النافذة" بشكل صحيح

للاطّلاع على مثال حول الشكل الذي تظهر به الصورة المتحركة في وضع "نافذة ضمن النافذة" عند تنفيذ sourceRectHint بشكل صحيح، يمكنك مشاهدة الفيديو رقم 2 في القسم السابق.

يُرجى الرجوع إلى نموذج Android Kotlin PictureInPicture كمرجع لتفعيل تجربة انتقال محسّنة.

الاستخدام

اسمح للمستخدمين بمواصلة مشاهدة الفيديو ليس داخل تطبيقك فقط، بل واستمر في ذلك على أجهزتهم. يتحكم تطبيقك في وقت دخول النشاط الحالي في وضع "نافذة ضمن النافذة" (PiP)، وقد يكون ذلك تفاعلاً مثل مغادرة العرض الحالي أو التمرير سريعًا للأعلى للانتقال إلى الشاشة الرئيسية.

في ما يلي بعض الأمثلة على الإجراءات المحتملة:

  • يمكن أن يدخل النشاط في وضع "نافذة ضمن النافذة" عندما ينقر المستخدم على زر الشاشة الرئيسية أو يمرِّر سريعًا إلى أعلى الصفحة الرئيسية. هذه هي الطريقة التي تواصل بها خرائط Google عرض الاتجاهات أثناء تشغيل المستخدم لنشاط آخر في نفس الوقت.

    الشكل 4: تم استخدام ميزة "نافذة ضمن النافذة" لمواصلة تجربة العثور على الطريق
  • يمكن لتطبيقك نقل الفيديو إلى وضع "نافذة ضمن النافذة" (PiP) عندما يعود المستخدم إلى الفيديو السابق لتصفّح محتوى آخر.

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

  • يمكن أن يوفّر تطبيقك طريقة للمستخدمين لإدراج محتوى إضافي في قائمة انتظار أثناء مشاهدة فيديو. يستمر تشغيل الفيديو في وضع "نافذة ضمن النافذة" بينما تعرض الشاشة الرئيسية نشاطًا لاختيار المحتوى.

استخدم نمط تفاعل يتكامل مع تجربة المشاهدة دون إزعاج. على سبيل المثال، إذا كان الفيديو في نهاية حلقة من المحتوى، سيتطلّب الدخول في وضع "نافذة ضمن النافذة" عند مغادرة الشاشة الرئيسية اتخاذ إجراء إضافي من المستخدم للعودة وإيقاف التشغيل أو الانتقال إلى عناصر التحكّم الصغيرة.

في تطبيقك، قد يختار المستخدم فيديو جديدًا عند تصفّح المحتوى على الشاشة الرئيسية، بينما يكون نشاط تشغيل الفيديو في وضع "نافذة ضمن النافذة". شغِّل الفيديو الجديد في نشاط التشغيل الحالي في وضع ملء الشاشة، بدلاً من بدء نشاط جديد قد يربك المستخدم.

يمكن للمستخدمين سحب نافذة "نافذة ضمن النافذة" إلى مكان آخر.

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

    الشكل 5: عناصر التحكّم التلقائية في "نافذة ضمن النافذة"
  • انقر مرّتين على النافذة للتبديل بين حجم "نافذة ضمن النافذة" الحالي والحد الأقصى أو الحد الأدنى لحجم "نافذة ضمن النافذة". على سبيل المثال، يؤدي النقر مرّتين على نافذة كبيرة إلى تصغيرها، والعكس صحيح.

    الشكل 6: التبديل بين الحدّ الأدنى والأقصى للحجم ضمن "نافذة ضمن النافذة" بالنقر مرّتين
  • خزِّن النافذة عن طريق سحبها إلى الحافة اليسرى أو اليمنى. لإلغاء إخفاء النافذة، إما انقر على الجزء المرئي من النافذة المخزنة أو اسحبه للخارج.

    الشكل 7: تم تخزين "نافذة ضمن النافذة" (PiP)
  • تغيير حجم نافذة "نافذة ضمن النافذة" باستخدام التصغير أو التكبير بإصبعين.

  • مرِّر سريعًا للأسفل على "نافذة ضمن النافذة" لإزالة النافذة.

    الشكل 8: التمرير سريعًا للأسفل

لمزيد من المعلومات حول تطبيق ميزة "نافذة ضمن النافذة"، يُرجى الاطّلاع على مستندات مطوّري برامج "نافذة ضمن النافذة".