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

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

مثال على عناصر تحكّم مخصّصة في وضع "نافذة ضمن النافذة"
الاستخدام
يمكن للمستخدمين مواصلة مشاهدة الفيديو ليس فقط داخل تطبيقك، بل أيضًا على أجهزتهم. يتحكّم تطبيقك في الوقت الذي يدخل فيه النشاط الحالي إلى وضع "نافذة ضمن النافذة"، ويمكن أن يكون ذلك تفاعلاً مثل مغادرة العرض الحالي أو التمرير سريعًا للأعلى للانتقال إلى الشاشة الرئيسية.
في ما يلي بعض الأمثلة على الإجراءات المحتملة:
يمكن أن ينتقل النشاط إلى وضع "نافذة ضمن النافذة" عندما ينقر المستخدم على زر الشاشة الرئيسية أو عندما يسحب للأعلى للانتقال إلى الشاشة الرئيسية. بهذه الطريقة، تواصل "خرائط Google" عرض الاتجاهات بينما ينفّذ المستخدم نشاطًا آخر في الوقت نفسه.
الشكل 4: استخدام ميزة "نافذة ضمن النافذة" لمواصلة تجربة تحديد الاتجاه يمكن لتطبيقك نقل فيديو إلى وضع "نافذة ضمن النافذة" عندما يعود المستخدم من الفيديو إلى تصفّح محتوى آخر.
يمكن لتطبيقك تبديل الفيديو إلى وضع "نافذة ضمن النافذة" أثناء مشاهدة المستخدم لنهاية حلقة من المحتوى. تعرض الشاشة الرئيسية معلومات ترويجية أو موجزة حول الحلقة التالية في السلسلة.
يمكن أن يوفّر تطبيقك طريقة للمستخدمين لإضافة محتوى إضافي إلى قائمة الانتظار أثناء مشاهدة فيديو. يستمر تشغيل الفيديو في وضع "نافذة ضمن النافذة" بينما تعرض الشاشة الرئيسية نشاطًا لاختيار المحتوى.
استخدِم نمط تفاعل يكمّل تجربة المشاهدة بدون أن يكون مزعجًا. على سبيل المثال، إذا كان الفيديو في نهاية حلقة من المحتوى، سيؤدي الانتقال إلى وضع "نافذة ضمن النافذة" عند مغادرة الشاشة الرئيسية إلى طلب إجراء إضافي من المستخدم للرجوع وإيقاف التشغيل أو التنقّل بين عناصر التحكّم الصغيرة.
في تطبيقك، قد يختار المستخدم فيديو جديدًا أثناء تصفّح المحتوى على الشاشة الرئيسية، بينما يكون نشاط تشغيل الفيديو في وضع "نافذة ضمن النافذة". تشغيل الفيديو الجديد في نشاط التشغيل الحالي بوضع ملء الشاشة، بدلاً من بدء نشاط جديد قد يربك المستخدم
أنماط التفاعل
يمكن للمستخدمين سحب نافذة "نافذة ضمن النافذة" إلى موقع آخر.
انقر مرة واحدة على النافذة لعرض زر تبديل إلى وضع ملء الشاشة وزر إغلاق وزر إعدادات والإجراءات المخصّصة التي يوفّرها تطبيقك (مثل عناصر التحكّم في التشغيل).
انقر مرّتين على النافذة للتبديل بين حجم "نافذة ضمن النافذة" الحالي والحد الأقصى أو الأدنى لحجمها، مثلاً، يؤدي النقر مرّتين على نافذة مكبّرة إلى تصغيرها، والعكس صحيح أيضًا.
إخفاء النافذة عن طريق سحبها إلى الحافة اليمنى أو اليسرى لإخراج النافذة من الحزمة، انقر على الجزء المرئي من النافذة المخفية أو اسحبها للخارج.
غيِّر حجم نافذة "نافذة ضمن النافذة" باستخدام ميزة "التكبير والتصغير بإصبعَين".
مرِّر سريعًا نافذة "نافذة ضِمن النافذة" للأسفل لإزالتها.
الانتقالات
لتحسين تجربة المستخدم عند الانتقال إلى وضع "نافذة داخل النافذة" والخروج منه، يمكنك تخصيص عمليات الانتقال عند الدخول والخروج.
انتقال سلس إلى وضع "نافذة ضمن النافذة"
عندما يفعّل المستخدم وضع "نافذة ضمن النافذة"، يتم تقليص حجم النشاط الحالي من وضع ملء الشاشة إلى نافذة صغيرة، وتستمر النافذة في عرض المحتوى بدون أن تتداخل مع أي واجهة مستخدم.
قدّم نظام التشغيل Android 12 تحسينات شكلية على عمليات الانتقال بين وضع ملء الشاشة ووضع "نافذة ضمن النافذة". بعد تنفيذ هذه التحديثات، سيتم توسيع نطاقها تلقائيًا ليشمل الأجهزة اللوحية والأجهزة القابلة للطي.
وبدون هذه التعديلات، ستكون عمليات الانتقال فعّالة ولكن أقل سلاسة. على سبيل المثال، قد تختفي نافذة "نافذة ضمن النافذة" مؤقتًا أثناء عملية الانتقال.
بدءًا من الإصدار 12 من نظام التشغيل Android، يوفّر الخيار
PictureInPictureParams.Builder.setAutoEnterEnabled(true) انتقالات أكثر سلاسة بين الإيماءات (مثل التمرير سريعًا للأعلى للوصول إلى الصفحة الرئيسية). ننصحك بتنفيذ ذلك مع تطبيقات ENTERTAINMENT أو COMMUNICATION أو VIDEO_PLAYER.
بدون هذا الخيار، تؤدي انتقالات الإيماءات إلى تصغير النافذة إلى رمز التطبيق قبل أن تظهر مرة أخرى كنافذة "نافذة ضمن النافذة" (كما هو موضّح في الفيديو 1).
تجربة انتقال أقل سلاسة عندما لا يتم تنفيذ ميزة "نافذة ضمن النافذة" بشكل صحيح في setAutoEnterEnabled
تجربة انتقال سلسة مع إضافة setAutoEnterEnabled إلى التطبيق
عرض المرئيات بسلاسة
عندما طرحنا ميزة "نافذة ضمن النافذة" في الإصدار 8.0 من نظام التشغيل Android، كان الرمز sourceRectHint يشير إلى مساحة النشاط المرئية بعد الانتقال إلى وضع "نافذة ضمن النافذة"، مثل حدود عرض الفيديو في مشغّل الفيديو. بدءًا من الإصدار 12 من نظام التشغيل Android، يستخدم نظام التشغيل sourceRectHint لتنفيذ حركة أكثر سلاسة عند الدخول إلى وضع "نافذة داخل النافذة" والخروج منه.
إذا لم يوفّر تطبيقك sourceRectHint مناسبًا، ستظل عمليات الانتقال إلى وضع "نافذة ضمن النافذة" تعمل، ولكن ستكون الحركات أقل سلاسة. على سبيل المثال، يعرض الفيديو 3 مثالاً أقل سلاسة على الانتقال من وضع ملء الشاشة إلى وضع "نافذة ضمن النافذة": بعد أن يتقلّص حجم نافذة ملء الشاشة إلى نافذة "نافذة ضمن النافذة"، يتم تغطيتها بطبقة سوداء قبل عرض الفيديو مرة أخرى.
sourceRectHint بشكل صحيحللاطّلاع على مثال حول شكل الصورة المتحركة في وضع "نافذة ضمن النافذة" عند تنفيذ sourceRectHint بشكل صحيح، يُرجى مشاهدة الفيديو 2 في القسم السابق.
يمكنك الرجوع إلى نموذج "نافذة ضمن النافذة" في Android Kotlin كمرجع لتفعيل تجربة انتقال سلسة.
لمزيد من المعلومات حول تنفيذ ميزة "نافذة ضمن النافذة"، يُرجى الاطّلاع على مستندات المطوّرين حول ميزة "نافذة ضمن النافذة".