نوافذ متعددة

الإعلانات

دعم تعدد النوافذ

 

دعم تعدد الـ نوافذ

يضيف أندرويد 7.0 دعماً لعرض أكثر من تطبيق واحد في نفس الوقت. على الهواتف، يمكن تشغيل تطبيقين جنباً إلى جنب..

أو واحداً فوق الآخر في وضع تقسيم الشاشة. على أجهزة التلفاز، يمكن للتطبيقات إستخدام وضع صورة بداخل صورة..

لمتابعة تشغيل الفيديو أثناء تفاعل المستخدمين مع تطبيق آخر. دعم تعدد النوافذ دعم تعدد النوافذ

إذا كان تطبيقك يستهدف أندرويد 7.0 (مستوى واجهة برمجة التطبيقات 24) أو أعلى، فيمكنك تهيئة كيفية معالجة تطبيقك للعديد من النوافذ.

على سبيل المثال، يمكنك تحديد الأبعاد الدنيا المسموح بها لنشاطك. دعم تعدد النوافذ دعم تعدد النوافذ

يمكنك أيضاً تعطيل عرض النوافذ المتعددة لتطبيقك، مما يضمن أن النظام لا يعرض سوى تطبيقك في وضع ملء الشاشة.

 

 

 

دعم تعدد الـ نوافذ

نظرة عامة


يسمح الأندرويد لعدة تطبيقات بمشاركة الشاشة في وقتٍ واحد. مثال، يمكن للمستخدم تقسيم الشاشة..

وعرض صفحة ويب على الجانب الأيسر أثناء إنشاء بريد إلكتروني على الجانب الأيمن. تعتمد تجربة المستخدم على إصدار نظام الأندرويد ونوع الجهاز:

  • الهواتف التي تعمل بنظام التشغيل أندرويد 7.0 تقدم وضع تقسيم الشاشة.

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

 

  • بدءاً من أندرويد 8.0 ، يمكن للتطبيقات وضع نفسها في وضع “صورة في صورة“..

مما يسمح لهم بمواصلة عرض المحتوى أثناء تصفح المستخدم للتطبيقات الأخرى أو التفاعل معها.

 

  • يمكن لمصنعي الأجهزة الأكبر إختيار تمكين وضع الشكل الحر..

حيث يمكن للمستخدم تغيير حجم كل نشاط بحريه. إذا قامت الشركة المصنعة بتمكين هذه الميزة..

فإن الجهاز يوفر الوضع الحر بالإضافة إلى وضع تقسيم الشاشة.

الشكل 1. تطبيقان يعملان جنباً إلى جنب في وضع تقسيم الشاشة.

 

 

 

يمكن للمستخدم التبديل إلى وضع تعدد الـ نوافذ بالطرق التالية:

 

فيمكنه سحب هذا النشاط إلى الجزء المظلل من الشاشة لوضع النشاط في وضع تعدد النوافذ.

 

  • إذا كان المستخدم ينفذ يقوم بالضغط مطولاً على زر النظرة العامة..

فسيضع الجهاز النشاط الحالي في وضع تعدد النوافذ ويفتح شاشة النظرة العامة للسماح للمستخدم بإختيار نشاط آخر لمشاركة الشاشة.

يمكن للمستخدمين سحب وإفلات البيانات من نشاط إلى آخر أثناء مشاركة الأنشطة للشاشة.

 

 

 

 

دورة حياة تعدد الـ نوافذ


وضع تعدد النوافذ لا يغير دورة حياة النشاط.

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

وهو النشاط الوحيد في حالة “الإستئناف” RESUMED. جميع الأنشطة الأخرى المرئية هي في وضع “البدء” STARTED ولكنها غير مستأنفة.

ومع ذلك، يعطي النظام هذه الأنشطة المرئية – ولكن – الغير مستأنفة أولوية أعلى من الأنشطة غير المرئية.

إذا تفاعل المستخدم مع أحد الأنشطة المرئية، فسيتم إستئناف هذا النشاط، ويدخل النشاط السابق الأعلى حالة “البدء” STARTED.

 

ملاحظة: في وضع تعدد النوافذ، قد لا يكون التطبيق في حالة “الإستئناف” RESUMED حتى لو كان مرئياً للمستخدم.

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

لهذا السبب، نوصي بأن الأنشطة التي تشغل الفيديو لا توقف تشغيل الفيديو مؤقتاً إستجابة لحدث دورة حياة “التوقف المؤقت” ON_PAUSE.

بدلاً من ذلك، يجب أن يبدأ النشاط في التشغيل إستجابة لـ”البدء” ON_START، وإيقاف التشغيل مؤقتاً إستجابة “للإيقاف” ON_STOP.

إذا كنت تقوم بالتعامل مع أحداث دورة الحياة بشكلٍ مباشر بدلاً من استخدام حزمة دورة الحياة Lifecycle ، فقم بإيقاف..

تشغيل الفيديو مؤقتاً في معالج ()onStop وإستئناف التشغيل في ()onStart .

 

 

عندما يضع المستخدم تطبيقاً في وضع تعدد النوافذ، يقوم النظام بإبلاغ النشاط عن تغيير التكوين، كما هو محدد في معالجة تغييرات التكوين.

يحدث هذا أيضاً عندما يقوم المستخدم بتغيير حجم التطبيق، أو يعيد التطبيق إلى وضع ملء الشاشة.

بشكلٍ أساسي، يشتمل هذا التغيير على نفس آثار دورة النشاط – عندما يقوم النظام بإشعار التطبيق الذي قام الجهاز بتبديله..

من الوضع الرأسي إلى الوضع الأفقي ، فيما عدا أنه تم تغيير أبعاد الجهاز بدلاً من تبديل الإتجاه فقط.

كما تمت مناقشته في معالجة تغييرات التكوين، يمكن أن يعالج نشاطك تغيير التكوين نفسه، أو يمكن أن يسمح للنظام بتدمير النشاط وإعادة إنشائه بالأبعاد الجديدة.

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

ليطابق إجراء المستخدم ويصدر تغييرات التكوين حسب الحاجة. إذا كان التطبيق متخلفاً في الرسم في المناطق المكشوفة حديثاً..

فسيملأ النظام هذه المناطق باللون المحدد بواسطة سمة “خلفية النافذه” windowBackground أو سمة windowBackgroundFallback الإفتراضية مؤقتاً.

 

 

 

 

 

دعم تعدد الـ نوافذ

 

تهيئة تطبيقك لوضع تعدد النوافذ


إذا كان تطبيقك يستهدف مستوى واجهة برمجة التطبيقات رقم 24 أو إصدار أعلى، فيمكنك تهيئة كيفية أنشطة تطبيقك..

وما إذا كانت تدعم عرض النوافذ المتعددة أم لا. يمكنك تعيين السمات في ملف الإيضاح للتحكم في كلٍ من الحجم والمخطط.

تنطبق إعدادات سمة النشاط الأساسي على جميع الأنشطة الموجودة داخل مجموعة المهام الخاصة به.

مثال، إذا كان النشاط الأساسي يحتوي على android:resizeableActivity تم ضبطها على القيمة “صحيح”..

فإن كافة الأنشطة في مجموعة المهام تكون قابلة لتغيير الحجم.

 

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

فسوف يقوم النظام بتغيير حجم التطبيق قسراً. يقدم النظام مربع حوار يحذر المستخدم من أن التطبيق قد يتصرف بشكلٍ غير متوقع.

لا يقوم النظام بتغيير حجم التطبيقات ذات الإتجاه الثابت؛ إذا حاول المستخدم فتح تطبيق ذو إتجاه ثابت ضمن وضع تعدد النوافذ، فسوف يغطي التطبيق كامل الشاشة.

 

 

android:resizeableActivity

عيّن هذه السمة في العنصر <activity> أو <application> في ملف الإيضاح لتمكين أو تعطيل عرض تعدد النوافذ:

android:resizeableActivity=["true" | "false"]

 

إذا تم تعيين هذه السمة على القيمة “صحيح”، فيمكن تشغيل النشاط في وضع تقسيم الشاشة و الوضع الحر.

إذا تم تعيين السمة على “خطأ”، فإن هذا النشاط لن يدعم وضع تعدد النوافذ. إذا كانت هذه القيمة “خطأ”..

وكان المستخدم يحاول تشغيل النشاط في وضع تعدد النوافذ، فسوف يغطي النشاط الشاشة بالكامل.

 

إذا كان تطبيقك يستهدف مستوى واجهة برمجة التطبيقات 24، ولكنك لم تحدد قيمة لهذه السمة، فسيتم تعيين قيمة السمة الإفتراضية إلى “صحيح”.

 

 

android:supportsPictureInPicture

عيّن هذه السمة في عقدة النشاط <activity> في ملف الإيضاح لتحديد ما إذا كان النشاط يدعم عرض صورة بداخل صورة.

يتم تجاهل هذه السمة إذا كان android:resizeableActivity تأخذ القيمة “خطأ”.

android:supportsPictureInPicture=["true" | "false"]

 

 

 

 

سمات المخطط

بإستخدام أندرويد 7.0 ، يدعم عنصر الإيضاح <layout> العديد من السمات التي تؤثر على كيفية تصرف أحد الأنشطة في وضع تعدد النوافذ:

 

android:defaultWidth

العرض الإفتراضي للنشاط عند تشغيله في الوضع الحر.

 

android:defaultHeight

الإرتفاع الإفتراضي للنشاط عند تشغيله في الوضع الحر.

 

android:gravity

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

 

android:minHeight, android:minWidth

الحد الأدنى للإرتفاع والحد الأدنى للعرض للنشاط في كل من أوضاع تقسيم الشاشه والوضع الحر.

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

يقوم النظام بقص النشاط إلى الحجم الذي يطلبه المستخدم.

 

مثال، يعرض الكود التالي كيفية تحديد الحجم والموقع الإفتراضيان للنشاط، والحد الأدنى لحجمه، عندما يتم عرض النشاط في الوضع الحر:

<activity android:name=".MyActivity">
    <layout android:defaultHeight="500dp"
          android:defaultWidth="600dp"
          android:gravity="top|end"
          android:minHeight="450dp"
          android:minWidth="300dp" />
</activity>

 

 

 

 

 

 

دعم تعدد الـ نوافذ

 

تشغيل تطبيقك في وضع تعدد النوافذ


بدءاً من أندرويد 7.0، يوفر النظام وظائف لدعم التطبيقات التي يمكن تشغيلها في وضع تعدد النوافذ.

 

تعطيل الخصائص في وضع تعدد النوافذ

يتم تعطيل بعض الخصائص أو تجاهلها عندما يكون الجهاز في وضع تعدد النوافذ، نظراً لكونها غير منطقية..

لأي نشاط قد يشارك شاشة الجهاز مع أنشطة أو تطبيقات أخرى. هذه الخصائص تشمل:

 

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

 

  • يتجاهل النظام التغييرات على السمة android:screenOrientation.

 

 

تغيير تعدد النوافذ للإشعارات والإستعلام

يقدم النشاط الدوال التاليه لدعم عرض تعدد النوافذ. دعم تعدد النوافذ دعم تعدد النوافذ

()isInMultiWindowMode

تستدعى لمعرفة ما إذا كان النشاط في وضع تعدد النوافذ.

()isInPictureInPictureMode

تستدعى لمعرفة ما إذا كان النشاط في وضع صورة بداخل صورة.

 

ملاحظة: وضع صورة بداخل صورة هو حالة خاصة من وضع تعدد النوافذ.

إذا كانت ()myActivity.isInPictureInPictureMode تقوم بإرجاع القيمة “صحيح”، فإن ()myActivity.isInMultiWindowMode أيضاً تقوم بإرجاع القيمة “صحيح”.

 

 

()onMultiWindowModeChanged

يستدعي النظام هذه الدالة عندما يدخل أو يخرج النشاط من وضع تعدد نوافذ. يمرر النظام القيمة “صحيح”..

للداله إذا دخل النشاط في وضع تعدد النوافذ، والقيمة “خطأ” إذا خرج النشاط من وضع تعدد النوافذ.

 

()onPictureInPictureModeChanged

يستدعي النظام هذه الدالة عندما يدخل أو يخرج النشاط من وضع صورة بداخل صورة.

يمرر النظام القيمة “صحيح” للدالة إذا كان النشاط يدخل في وضع صورة بداخل صورة..

و يمرر القيمة “خطأ” إذا كان النشاط يخرج من وضع صورة بداخل صورة. دعم تعدد النوافذ

 

 

فئة الشظية Fragment تكشف عن العديد من إصدارات هذه الدوال، مثال ()Fragment.onMultiWindowModeChanged .

 

 

 

 

دعم تعدد الـ نوافذ

 

الدخول إلى وضع صورة بداخل صورة

لإدخال النشاط إلى وضع صورة بداخل صورة، قم بإستدعاء ()Activity.enterPictureInPictureMode دعم تعدد النوافذ

لن يكون لهذه الدالة أي تأثير إذا كان الجهاز لا يدعم وضع صورة بداخل صورة. لمزيد من المعلومات، راجع مستندات صورة بداخل صورة.

 

 

 

إطلاق أنشطة جديدة في وضع تعدد النوافذ

عند تشغيل نشاط جديد، يمكنك التلميح إلى النظام بأنه يجب عرض النشاط الجديد بجوار النشاط الحالي، إن أمكن.

للقيام بذلك، إستخدم علامة الغرض FLAG_ACTIVITY_LAUNCH_ADJACENT. يتطلب تمرير هذه العلامة السلوك التالي:

 

  • إذا كان الجهاز في وضع تقسيم الشاشة..

يحاول النظام إنشاء نشاط جديد بجوار النشاط الذي قام بتشغيله، بحيث يشترك النشاطان في الشاشة.

لا يضمن النظام كونه قادر على القيام بذلك، ولكنه يجعل الأنشطة بجانب بعضها إن أمكن.

 

  • إذا لم يكن الجهاز في وضع تقسيم الشاشة، فلن يكون لهذه العلامة أي تأثير.

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

عن طريق إستدعاء ()ActivityOptions.setLaunchBounds . لا يكون لهذه الدالة أي تأثير إذا لم يكن الجهاز في وضع تعدد النوافذ.

 

ملاحظة: إذا قمت بتشغيل نشاط بداخل مجموعة المهام، فسيحل النشاط محل النشاط الظاهر على الشاشة، ويرث جميع خصائص النوافذ المتعددة الخاصة به.

إذا كنت تريد تشغيل النشاط الجديد كنافذة منفصلة في وضع تعدد النوافذ، فيجب عليك تشغيله في حزمة مهام جديدة.

 

 

 

 

دعم تعدد الـ نوافذ

 

دعم السحب والإفلات

يمكن للمستخدمين سحب وإفلات البيانات من نشاط إلى آخر بينما يقوم النشاطان بمشاركة الشاشة.

(قبل أندرويد 7.0، كان بإمكان المستخدمين سحب البيانات وإفلاتها فقط في النشاط الواحد). لهذا السبب..

قد ترغب في إضافة وظيفة السحب والإفلات إلى تطبيقك إن كان تطبيقك لا يدعمها حالياً.

 

DragAndDropPermissions

كائن رمز مسؤول عن تحديد الأذونات الممنوحة للتطبيق الذي يتلقى الإفلات.

 

()View.startDragAndDrop

الأسم المستعار لـ ()View.startDrag . لتمكين عملية السحب والإفلات عبر الأنشطة، مرر العلامة DRAG_FLAG_GLOBAL.

إذا كنت بحاجة إلى منح أذونات URI للنشاط المستلم، فمرر العلامات DRAG_FLAG_GLOBAL_URI_READ أو

DRAG_FLAG_GLOBAL_URI_WRITE ، حسب ما تقتضيه الحاجه.

 

()View.cancelDragAndDrop

تلغي عملية السحب الجارية حالياً. لا يمكن إستدعاؤها إلا من خلال التطبيق الذي أنشأ عملية السحب.

 

()View.updateDragShadow

تستبدل ظل السحب لعملية السحب التي تجرى حالياً. لا يمكن إستدعاؤها إلا من خلال التطبيق الذي أنشأ عملية السحب.

 

()Activity.requestDragAndDropPermissions 

تطلب أذونات URIs المحتوى الذي تم تمريره مع “مقتطف البيانات” ClipData المتضمن في “حدث السحب” DragEvent.

 

 

 

دعم تعدد الـ نوافذ

 

إختبار دعم تطبيقك لتعدد النوافذ


سواء كان تطبيقك يستهدف مستوى واجهة برمجة التطبيقات 24 أو أحدث، يجب عليك التحقق من كيفية تصرفه..

في وضع تعدد النوافذ في حالة محاولة المستخدم تشغيله في وضع تعدد النوافذ على جهاز يعمل بنظام التشغيل أندرويد 7.0 أو إصدار أحدث.

 

 

تكوين جهاز الإختبار

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

 

 

إذا كان تطبيقك يستهدف واجهة برمجة التطبيقات مستوى 23 أو أقدم

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

فإن النظام سيقوم بتغيير حجم التطبيق قسراً ما لم يعلن التطبيق عن إتجاه ثابت.

إذا لم يعلن تطبيقك عن إتجاه ثابت، فيجب عليك تشغيل تطبيقك على جهاز يعمل بنظام التشغيل أندرويد 7.0 أو أحدث..

ومحاولة وضع التطبيق في وضع تقسيم الشاشة. تحقق من أن تكون تجربة المستخدم مقبولة عند تغيير حجم التطبيق قسراً.

إذا أعلن التطبيق عن إتجاه ثابت، فيجب أن تحاول وضع التطبيق في وضع تعدد النوافذ.

تحقق من أنه عندما تفعل ذلك، يظل التطبيق في وضع ملء الشاشة.

 

 

 

إذا كنت تدعم وضع تعدد النوافذ

إذا كان تطبيقك يستهدف مستوى واجهة برمجة التطبيقات 24 أو أحدث ولم يتم تعطيل دعم النوافذ المتعددة..

فتحقق من السلوك التالي ضمن كل من وضع تقسيم الشاشة و الوضع الحر.

 

  •  ابدأ تشغيل التطبيق في وضع ملء الشاشة..

ثم أنتقل إلى وضع تعدد النوافذ عن طريق الضغط على زر “نظرة عامة”. تحقق من أن التطبيق يتبدل بشكلٍ صحيح.

 

  •  شغّل التطبيق مباشرة في وضع تعدد النوافذ، وتحقق من تشغيل التطبيق بشكلٍ صحيح.

يمكنك تشغيل تطبيق ما في وضع تعدد النوافذ عن طريق الضغط على زر “نظرة عامة”، ثم الضغط بإستمرار على شريط العنوان في تطبيقك وسحبه إلى إحدى المناطق المميزة على الشاشة.

 

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

تحقق من التطبيق يعاد تحجيمه دون أن يتعطل، وأن عناصر واجهة المستخدم الضرورية مرئية.

 

  •  إذا حددت الحد الأدنى من الأبعاد لتطبيقك..

فحاول تغيير حجم التطبيق بحجم أقل من هذه الأبعاد. تحقق من أنه لا يمكنك تغيير حجم التطبيق ليكون أصغر من الحد الأدنى المحدد.

 

  • خلال جميع الإختبارات، تحقق من أن أداء تطبيقك مقبول.

مثال، تحقق من عدم وجود تأخير طويل جداً لتحديث واجهة المستخدم بعد تغيير حجم التطبيق.

 

 

 

إختبار قائمة التحقق

للتحقق من أداء تطبيقك في وضع تعدد النوافذ، جرِّب العمليات التالية.

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

 

  •  الدخول و الخروج من وضع تعدد النوافذ.

 

  •  التبديل من تطبيقك إلى تطبيق آخر..

وتحقق من أن التطبيق يتصرف بشكلٍ صحيح بينما يكون مرئي ولكن غير نشط. مثال، إذا كان تطبيقك يشغل الفيديو، فتحقق من إستمرار تشغيل الفيديو أثناء تفاعل المستخدم مع تطبيق آخر.

 

  •  في وضع تقسيم الشاشة، جرّب تحريك الشريط الفاصل لجعل تطبيقك أكبر وأصغر.

جرب هذه العمليات في كل من التكوينات “جنباً إلى جنب” و “تطبيق فوق الآخر”. تحقق من عدم تعطل التطبيق..

و أن الوظائف الأساسية مرئية، ولا تستغرق عملية تغيير الحجم وقتاً طويلاً.

 

  •  قم بأداء العديد من عمليات تغيير الحجم في تتابع سريع.

تحقق من عدم تعطل تطبيقك أو حدوث إستهلاك للذاكرة. للحصول على معلومات حول التحقق من إستخدام ذاكرة تطبيقك، إستخدم Memory Profiler في أندرويد ستوديو.

 

  •  إستخدم تطبيقك بشكلٍ طبيعي في عدد من تكوينات النوافذ المختلفة..

وتحقق من أن التطبيق يتصرف بشكلٍ صحيح. تحقق من أن النص قابل للقراءة، وأن عناصر واجهة المستخدم ليست أصغر من أن يُتفاعل معها.

 

 

 

 

دعم تعدد الـ نوافذ

 

إذا قمت بتعطيل دعم تعدد النوافذ

إذا قمت بتعطيل دعم تعدد النوافذ\ نوافذ عن طريق تعيين "android:resizeableActivity ="false ، فيجب عليك تشغيل تطبيقك..

على جهاز يعمل بنظام التشغيل أندرويد 7.0 أو أحدث و حاول وضع التطبيق في الوضع الحر و وضع تقسيم الشاشة.

تحقق من أنه عندما تفعل ذلك، يظل التطبيق في وضع ملء الشاشة.

لمزيد من المعلومات حول دعم عدد النوافذ في الأندرويد، راجع خمس نصائح للتحضير لتعدد النوافذ في أندرويد N و نموذج تعدد النوافذ.

 


للإطلاع على المقال باللغة الإنجليزية أضغط هنا.

الإعلانات

10 thoughts on “نوافذ متعددة”

اترك رد