يفعِّل Android وضع التوافق للتطبيقات التي توضِّح الاتجاه أو قيود قابلية إعادة التصميم. يضمن وضع التوافق السلوك المقبول للتطبيق في الأجهزة ذات الشاشات الكبيرة والهواتف القابلة للطيّ ولكن سهولة الاستخدام دون المستوى الأمثل.
تسمح عمليات الإلغاء حسب التطبيق للشركات المصنّعة للأجهزة من تغيير لتحسين تجربة المستخدم أو منع تعطّل التطبيقات أجهزة محددة.
الأجهزة المرجعية
قد تتطلّب الأجهزة التالية عمليات إلغاء خاصة بكل تطبيق بسبب العمليات غير المعتادة. الإعدادات أو التهيئات التي لا تتوافق معها التطبيقات بشكل جيد:
- الأجهزة اللوحية: الاتجاه الطبيعي لبعض الأجهزة اللوحية، مثل Pixel Tablet
أفقي. يكون الجهاز في اتجاهه الطبيعي عندما
يمكن إرجاع المشتريات مقابل
Display#getRotation()
.Surface.ROTATION_0
إذا افترضت التطبيقات أنّ اتجاهROTATION_0
عمودي، لا يمكن أن تكون تخطيطات التطبيق ومعاينة الكاميرا غير متطابقة مع شاشة الجهاز. - الهواتف القابلة للطيّ الأفقية: تتوفّر بعض الأجهزة القابلة للطيّ، مثل Pixel Fold. الاتجاه الرأسي عند طيه، لكن الاتجاه الأفقي عند طيه. إذا افترضت التطبيقات أن الاتجاه غير المطوي يكون في الوضع العمودي، وميضًا التكرارات أو مشكلات التنسيق.
- الهواتف القابلة للطيّ: عادةً ما تكون الهواتف غير المطوية في الوضع العمودي. توجهك. ولكن عند طيّ الهواتف، يتم عادةً عرض شاشة صغيرة فيها الاتجاه الأفقي. يجب أن تحدِّد التطبيقات الميزات المختلفة واتجاهات شاشات العرض.
مشاكل التوافق الشائعة
تواجه التطبيقات مشاكل التوافق في أغلب الأحيان بسبب اتجاه التطبيق القيود، وإمكانية إعادة التعديل، ونسبة العرض إلى الارتفاع، والتعامل غير الصحيح مع واتجاه معاينة الكاميرا وواجهات برمجة التطبيقات التي يتم إساءة استخدامها.
ليتيربوكسينغ
يضع برنامج Letterboxing التطبيق في وسط الشاشة أو على الشاشات الكبيرة إلى جانب أو الآخر للوصول بسهولة. غير لامعة (أشرطة بألوان خالصة أو خلفية مموهة) لملء منطقة العرض غير المستخدمة على طول الجوانب أو الجزء العلوي أسفل التطبيق.
غالبًا ما يحدث الأشرطة المعدّة للمربع على الأجهزة ذات الشاشات الكبيرة نظرًا لأن الأبعاد تختلف عادةً نسبة العرض إلى الارتفاع لشاشة الجهاز عن نسبة العرض إلى الارتفاع العادية الهواتف التي تم تصميم معظم التطبيقات لها.
المشكلة
لا يتوافق التطبيق مع جميع إعدادات العرض لأنّه تم إصلاح التطبيق. الاتجاه أو نسبة العرض إلى الارتفاع الثابتة أو لا يمكن تغيير حجمه.
تتضمن إعدادات الضبط التي تتحكّم في اتجاه التطبيق وإمكانية تغيير حجمه التالي:
screenOrientation
: تحدّد اتجاهًا ثابتًا تطبيق معين. يمكن للتطبيقات أيضًا ضبط الاتجاه في وقت التشغيل باستخدامActivity#setRequestedOrientation()
resizeableActivity
: تشير إلى ما إذا كان بإمكان النظام تغيير حجم التطبيقات لتلائم النوافذ ذات الأبعاد المختلفة. على نظام التشغيل Android 11 (مستوى واجهة برمجة التطبيقات) 30) وأدنى، يحدد ما إذا كانت التطبيقات تتيح وضع النوافذ المتعددة. مشغَّلة نظام التشغيل Android 12 (المستوى 31 لواجهة برمجة التطبيقات) والإصدارات الأحدث، يحدّد ما إذا كانت التطبيقات متوافقة وضع النوافذ المتعددة على الشاشات الصغيرة (مكثّف) فئة حجم النافذة). على نظام التشغيل Android 12 والإصدارات الأحدث، يمكن للتطبيقات إتاحة وضع النوافذ المتعددة على الشاشات الكبيرة (نافذة متوسطة أو موسّعة فئة الحجم) بغض النظر عن هذا الإعداد.maxAspectRatio
: لتحديد الحدّ الأقصى لنسبة العرض إلى الارتفاع التي يدعمها التطبيق. يمكن فقط للتطبيقات التي تم ضبطresizeableActivity
على "false
" استخدامها المجموعةmaxAspectRatio
.minAspectRatio
: تحدّد الحدّ الأدنى لنسبة العرض إلى الارتفاع التي يدعمها التطبيق. يمكن فقط للتطبيقات التي تم ضبطresizeableActivity
على "false
" استخدامها المجموعةminAspectRatio
.
تحسين
يجب أن يعمل التطبيق مع جميع شاشات الأجهزة وعرض وضع النوافذ المتعددة. الاتجاهات والأحجام. إزالة جميع الاتجاهات ونسبة العرض إلى الارتفاع الثابتة القيود المفروضة على تنسيقات التطبيق وملف بيان التطبيق.
حل بديل التوافق
في حال تشغيل تطبيق ذي اتجاه ثابت أو نسبة عرض إلى ارتفاع ثابتة في نافذة لا يتيح التطبيق عرض حجم النافذة أو اتجاهها بشكل مباشر، يعمل على عرض المحتوى بتنسيق Letterbox للحفاظ على الاستمرارية.
بدءًا من نظام التشغيل Android 12 (المستوى 31 لواجهة برمجة التطبيقات) والاستمرار في الإصدار 12L (المستوى 32 لواجهة برمجة التطبيقات)، تطبق المنصة مجموعة متنوعة من التحسينات على التطبيقات المصممة للعرض على شاشة عريضة أفقيًا. الجهاز الشركة المصنعة في تنفيذ تحسينات واجهة المستخدم. لست بحاجة إلى اتخاذ أي إجراءات إضافية تطوير تطبيقك للاستفادة من التحسينات.
يقدّم الإصدار Android 12 (المستوى 31 من واجهة برمجة التطبيقات) التحسينات الجمالية التالية، الشركات المصنّعة للأجهزة:
- الزوايا المستديرة: تكون زوايا نافذة التطبيق أكثر تنقيحًا.
- شفافية شريط النظام: أشرطة الحالة والتنقل، التي تتراكب على التطبيقات، تكون شبه شفافة، مما يجعل الرموز على الأشرطة قابلة للعرض دائمًا فوق خلفية مُعَدّة للعرض على شاشة عريضة أفقيًا.
- نسبة العرض إلى الارتفاع القابلة للضبط: يمكن تعديل نسبة العرض إلى الارتفاع للتطبيق. لتحسين مظهر التطبيق.
يضيف الإصدار 12L (المستوى 32 من واجهة برمجة التطبيقات) التحسينات الوظيفية التالية:
إمكانية ضبط الموضع: على الشاشات الكبيرة، يمكن للشركات المصنّعة للأجهزة ضع التطبيق على الجانب الأيسر أو الأيمن من الشاشة، مما التفاعل أسهل.
زر إعادة التشغيل المُعاد تصميمه: يمكن للشركات المصنِّعة للأجهزة تنفيذ إعادة التشغيل زر جديد في وضع توافق الحجم من أجل التعرف عليها بشكل أفضل من قبل المستخدمين.
يضيف Android 13 (المستوى 33) مربع حوار لتوعية المستخدمين بشأن تحديد مكانة تطبيق مُعدّ للعرض على شاشة عريضة أفقيًا على الشاشة أو تضمين المربّع الأفقي في وضع تقسيم الشاشة:
وضع توافق الحجم
وضع توافق الحجم هو برنامج مُعدّ للعرض على شاشة عريضة أفقيًا يتضمّن عنصر تحكُّم في إعادة التشغيل. تشير رسالة الأشكال البيانية التحكم تمكن المستخدمين من إعادة تشغيل التطبيق وإعادة رسم الشاشة. استدعاءات Android وضع توافق الحجم للتطبيقات التي تم تحديد عدم إمكانية تغيير حجمها. عندما يتم ينتقل النشاط إلى حاوية عرض غير متوافقة مع حقًا، فقد يعيد النظام تقييم التطبيق لملء شاشة عرض الجهاز في بُعد واحد على الأقل.
تشمل تغييرات إعدادات الجهاز التي يمكن أن تؤدي إلى تفعيل وضع التوافق مع الحجم ما يلي: ما يلي:
- تدوير الجهاز
- جهاز قابل للطيّ أو غير قابل للطي
- التغيير بين وضعَي ملء الشاشة والعرض في وضع تقسيم الشاشة
المشكلة
ينطبق وضع توافق الحجم عادةً على الأنشطة التي تم تقييدها في الاتجاه أو نسبة العرض إلى الارتفاع وتتم تهيئتها (أو يحددها النظام) يكون غير قابل لتغييره.
يُعد تطبيقك قابلاً لتغيير الحجم، ولن يتم تحديد حجمه. وضع التوافق — إذا كان يستوفي أي من المعايير التالية:
- يمكن تغيير حجمه باستخدام
resizeableActivity="true"
- يتيح وضع نافذة ضمن النافذة (PIP).
- مضمّن
- تم تطبيق إلغاء
FORCE_RESIZE_APP
لكل تطبيق من خلال الشركة المصنّعة للجهاز (يتم تجاهل الخصائص التي حدّدها التطبيق)
إذا لم يستوفِ تطبيقك أيًا من الشروط، سيتم اعتبار أنه لا يمكن تغيير حجمه ويمكن وضعه في وضع توافق الحجم.
تحسين
يجب أن يعمل التطبيق مع جميع أحجام العرض. اجعل حجم تطبيقك قابلاً لتغيير حجم التطبيق من خلال ضبط
السمة android:resizeableActivity
للسمة <activity>
أو <application>
على true
في
التطبيق. تصميم تخطيطات سريعة الاستجابة أو تكيّفية لتطبيقك. لمزيد من المعلومات،
المعلومات، راجع
التوافق مع أحجام الشاشات المختلفة والدعم
وضع النوافذ المتعددة.
حل بديل التوافق
يضع Android تطبيقًا في وضع توافق الحجم عندما يحدِّد النظام يمكن تحسين عرض التطبيق المُعدّ للعرض على شاشة عريضة أفقيًا من خلال تغيير حجم التطبيق لملء نافذة عرض في بُعد واحد على الأقل. يعرض النظام عنصر تحكُّم في إعادة التشغيل. التي تعيد إنشاء عملية التطبيق، وتعيد إنشاء النشاط وإعادة رسم العرض. يمكنك أيضًا الاطّلاع على مقالة نظرة عامة على العمليات وسلاسل المحادثات.
الحلقات الوامضة
عندما لا يدعم أحد التطبيقات جميع اتجاهات العرض، قد يتم تطبيقه بشكل متكرّر وطلب اتجاهات جديدة عند حدوث تغيير في التهيئة، وإنشاء حلقة لا نهائية تجعل الشاشة تومض أو يمكن تدوير التطبيق إلى ما لا نهاية.
المشكلة
في نظام التشغيل Android 12 (مستوى واجهة برمجة التطبيقات 31) والإصدارات الأحدث، يمكن للشركات المصنّعة للأجهزة ضبط
أجهزتهم لتجاهل قيود الاتجاهات التي تحددها التطبيقات وبدلاً من ذلك
فرض أوضاع التوافق. على سبيل المثال، يمكن أن يتجاهل الجهاز القابل للطي
النشاط android:screenOrientation="portrait"
الإعداد عند عرض النشاط على الأجهزة اللوحية ذات الحجم الأفقي للجهاز
الشاشة الداخلية.
في حال تجاهل قيود اتجاه التطبيق، يمكن للتطبيق آليًا.
اضبط الاتجاه من خلال استدعاء
Activity#setRequestedOrientation()
المكالمة
تؤدي إلى إعادة تشغيل التطبيق إذا كان التطبيق لا يتعامل مع تغييرات الضبط (يُرجى الاطّلاع على
التعامل مع تغييرات الإعدادات). بعد
فعند إعادة تشغيله، يتم تجاهل قيود اتجاه التطبيق مرة أخرى، ويتكرر التطبيق
الاتصال برقم "setRequestedOrientation()
"، تؤدي المكالمة إلى إعادة تشغيل التطبيق
وهكذا في حلقة ذاتية دائمة.
هناك طريقة أخرى قد تواجه بها هذا وهي عندما
الاتجاه الطبيعي (الاتجاه المعتاد
يحدده Android) لشاشة الجهاز أفقيًا (أي استدعاء
يمكن إرجاع المشتريات خلال Display#getRotation()
.
Surface.ROTATION_0
عندما يكون الجهاز باتجاه أفقي
النسبة). في السابق، افترضت التطبيقات أنّ السمة Display.getRotation() =
Surface.ROTATION_0
تعني أنّ الجهاز في الاتجاه العمودي، إلا أنّ ذلك ليس كذلك
على الشاشة دائمًا، على سبيل المثال، على الشاشة الداخلية لبعض الأجهزة القابلة للطي
على بعض الأجهزة اللوحية.
قد يتحقّق تطبيق في الاتجاه الأفقي على شاشة داخلية قابلة للطي
تدوير الشاشة، والحصول على قيمة ROTATION_0
، يفترض الاتجاه الطبيعي
الجهاز في الوضع العمودي وتجري
setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
)
لإعادة ضبط تنسيق التطبيق. بعد إعادة تشغيل التطبيق (في الوضع الأفقي)
الاتجاه)، فقد يتم التحقق مرة أخرى من تدوير الشاشة، وتظهر قيمة
ROTATION_0
، مكالمة
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
و
لمواصلة التكرار اللانهائي.
تحسين
يجب عدم تنفيذ ما يلي:
- يمكنك ضبط الاتجاه التلقائي باستخدام
Activity#setRequestedOrientation()
في النشاطonCreate()
لأن طلب الاتجاه يمكن ظهرت بشكل غير متوقع بسبب تغييرات لم تتم معالجتها في الإعدادات - على افتراض أنّ الاتجاه الطبيعي للجهاز (
ROTATION_0
) يكون في الوضع العمودي. - يمكنك ضبط الاتجاه استنادًا إلى إشارات غير مرتبطة بحجم النافذة الحالي، مثل
باسم
Display#getRotation()
، وجودFoldingFeature
، أو واجهات برمجة التطبيقات التي تم إيقافها نهائيًا.
حل بديل التوافق
يتجاهل Android المكالمات الواردة إلى Activity#setRequestedOrientation()
في ما يلي
الحالات:
تمت إعادة بدء النشاط من استدعاء سابق إلى الطريقة أو تم تفعيل معالجة قوة تدوير الكاميرا المتوافقة مع الكاميرا (راجِع الكاميرا معاينة أدناه).
يمكن للشركات المصنّعة للأجهزة تطبيق هذا السلوك على تطبيق يحتوي على
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION
قام النشاط بإجراء أكثر من طلبي اتجاه في ثانية واحدة، والتي إلى حدوث تكرار حلقي. من بين الطلبين المتكررين، يستخدم Android الذي يزيد مساحة عرض التطبيق.
يمكن للشركات المصنّعة للأجهزة تطبيق هذا السلوك على تطبيق يحتوي على
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
معاينة الكاميرا
يمكن تشوّه أو تشوّه معاينة الكاميرا (أو عدسة الكاميرا) في تطبيقات الكاميرا. على الأجهزة اللوحية وأجهزة الكمبيوتر المحمولة والشاشات القابلة للطي.
المشكلة
ينص مستند تعريف التوافق مع Android على ما يلي: أداة استشعار صور الكاميرا "يجب أن تكون موجّهة حتى يكون بُعد الكاميرا الطويل يتوافق مع البعد الطويل للشاشة".
تفترض التطبيقات غالبًا أن اتجاه الجهاز واتجاه أداة استشعار الكاميرا عمودي - افتراض معقول على الهواتف المحمولة القياسية. لكن يمكن أن يكون الاتجاه الطبيعي للأجهزة اللوحية وأجهزة الكمبيوتر المحمولة وأجهزة استشعار الكاميرات لديها منظر طبيعي. ويمكن أيضًا أن تتضمّن أشكال الأجهزة الجديدة، مثل الأجهزة القابلة للطيّ، العديد من أشكال الأجهزة الاتجاهات والعديد من أدوات استشعار الكاميرا باتجاهات متفاوتة.
عند بدء نشاط باتجاه الكاميرا الذي لا يتوقعه التطبيق أو أن التبديل بين الكاميرات أو شاشات الأجهزة المختلفة (بالنسبة إلى الهواتف القابلة للطي) يمكن أن يؤدي إلى معاينة الكاميرا غير المتوافقة أو المشوّهة.
تحسين
يجب أن تحدّد تطبيقات الكاميرا اتجاه الجهاز والكاميرا ويديرهما بشكل صحيح اتجاه أداة الاستشعار من أجل تقديم معاينة للكاميرا تمت محاذاة محتواها وتحجيمه بشكل صحيح. يجب أن تحسب التطبيقات دوران الجهاز ودوران أداة الاستشعار والشاشة أو النافذة. نسبة العرض إلى الارتفاع، ثم تطبيق النتائج على معاينة الكاميرا. للحصول على تفاصيل يُرجى الاطّلاع على معاينة الكاميرا والتعرّف على "الكاميرا" عدسة الكاميرا:
حل بديل التوافق
يكون الجهاز في الاتجاه الطبيعي عندما Display#getRotation()
تعرض Surface.ROTATION_0
. يحتسب النظام
CameraCharacteristics.SENSOR_ORIENTATION
من الاتجاه الطبيعي للجهاز. يقوم Android بمحاذاة النافذة العمودية
التطبيقات ذات الاتجاه الطبيعي للجهاز
هو ما تتوقعه معظم التطبيقات. يقتصّ Android أيضًا صورة أداة الاستشعار في الكاميرا عند
يكون اتجاه أداة الاستشعار أفقيًا ومعاينة الكاميرا رأسية. المحدد
تتضمن الحلول ما يلي:
فرض تدوير معاينات الكاميرا للتطبيقات ذات الوضع العمودي: التطبيقات في الاتجاه الرأسي، ويتوقع الاتجاه الطبيعي للجهاز واتجاه أداة استشعار الكاميرا ليكون رأسيًا. أمّا على Android 12 (مستوى واجهة برمجة التطبيقات 31) والإصدارات الأحدث، يمكن تشغيل التطبيقات في اتّجاهات متعدّدة للأجهزة في حال تتجاهل الشركات المصنعة للأجهزة مواصفات الاتجاه.
عندما يكون تطبيقًا لقيود على وضع "بورتريه" مرتبطًا بالكاميرا، يفرض Android يعمل على تدوير التطبيق لمحاذاة نافذة التطبيق في الوضع العمودي مع اتجاه الجهاز.
على بعض الأجهزة اللوحية (راجع الأجهزة المرجعية)، قد تجد التطبيق تم تدوير النافذة العمودية إلى الوضع العمودي بملء الشاشة للمحاذاة مع الاتجاه الطبيعي للجهاز. يشغل التطبيق وضع ملء الشاشة بعد فرض التشغيل. تدوير.
في الشاشة الأفقية الداخلية للأجهزة القابلة للطي (راجِع المرجع) الأجهزة)، يتم تدوير أنشطة الوضع العمودي فقط إلى أفقي ليتماشى مع الاتجاه الطبيعي غير المطوي. التطبيق مُعد للعرض على شاشة عريضة أفقيًا بعد دوران القوة.
اقتصاص الكاميرا الأمامية الداخلية: أداة استشعار الكاميرا الأمامية الداخلية في بعض تكون الهواتف القابلة للطيّ في الاتجاه الأفقي بالإضافة إلى فرض تدوير معاينة الكاميرا على الشاشة الداخلية القابلة للطي، يقتصّ Android الجزء الأمامي مجال رؤية الكاميرا (الأفقي) بحيث يلتقط جهاز الاستشعار عرضًا معاكسًا اتجاه الجهاز.
فرض إعادة تحميل معاينات الكاميرا: يتنقل النظام خلال النشاط. الطريقتان
onStop()
وonStart()
(تلقائيًا) أوonPause()
onResume()
(يتم تطبيقه من قِبل OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE تجاوز كل تطبيق) بعد فرض التدوير للتأكّد من أنّ معاينة الكاميرا بشكل صحيح.تغيير نسبة العرض إلى الارتفاع: يغيّر النظام نسبة العرض إلى الارتفاع بشكل ديناميكي القوة التي يتم تدويرها في معاينة الكاميرا إلى حد أدنى أعلى لنسبة العرض إلى الارتفاع، مما يضمن ضبط حجم معاينة الكاميرا بشكل صحيح.
يمكن لمطوّري التطبيقات إلغاء هذه الحلول البديلة إذا كانت التطبيقات تتعامل مع معاينة الكاميرا. بشكل صحيح. راجِع عمليات الإلغاء حسب التطبيق.
واجهات برمجة التطبيقات التي يشيع استخدامها
بما أن Android أتاح المزيد من الميزات مثل وضع النوافذ المتعددة أجهزة مثل الهواتف القابلة للطي وواجهات برمجة التطبيقات القديمة واستبدالها واجهات برمجة تطبيقات محدَّثة تتوافق مع جميع أحجام الشاشات وأشكال الأجهزة مماثلة. ومع ذلك، لا تزال واجهات برمجة التطبيقات المتوقّفة نهائيًا متاحة للاستخدام في الأنظمة القديمة. التوافق.
تم تصميم بعض واجهات برمجة تطبيقات View
لأغراض خاصة قد لا تكون فعالة في بعض الأحيان.
ومفهومة من قبل المطورين.
المشكلة
يواصل المطوّرون استخدام واجهات برمجة تطبيقات Display
المتوقّفة نهائيًا، ويفترضون بشكل غير صحيح أنّ
تعرض واجهات برمجة التطبيقات حدود التطبيق بدلاً من حدود منطقة عرض الجهاز. أو المطوّرون
تستخدم عن طريق الخطأ واجهات برمجة تطبيقات العرض لغرض معين للحصول على مقاييس العرض العامة.
والنتيجة هي الحسابات الخاطئة عند إعادة ضبط موضع عناصر واجهة المستخدم بعد نافذة التطبيق
تغيير حجم الأحداث، مما يتسبب في حدوث مشكلات في التنسيق.
واجهات برمجة تطبيقات الشبكة الإعلانية التي يتم إيقافها نهائيًا وإساءة استخدامها:
لمزيد من المعلومات، يُرجى مراجعة إتاحة وضع النوافذ المتعددة:
واجهات برمجة تطبيقات العرض الذي يسيء استخدامها:
تحسين
لا تعتمد أبدًا على حجم العرض المادي لتحديد موضع عناصر واجهة المستخدم. نقل بيانات
من التطبيقات إلى واجهات برمجة التطبيقات استنادًا إلى WindowMetrics
، بما في ذلك ما يلي
واجهات برمجة تطبيقات WindowManager
:
النظام الأساسي:
Jetpack:
حل بديل التوافق
يؤدي إجراء إلغاءين إلى تعديل واجهات برمجة تطبيقات Display
المتوقّفة نهائيًا وواجهات برمجة تطبيقات View
التي يتم إساءة استخدامها من أجل تحقيق ما يلي:
إرجاع حدود التطبيق:
ALWAYS_SANDBOX_DISPLAY_APIS
لـ Display
واجهات برمجة التطبيقات OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS
لواجهات برمجة تطبيقات View
. يتم تطبيق ALWAYS_SANDBOX_DISPLAY_APIS
أيضًا بشكل افتراضي على
التطبيقات المؤهلة لوضع التوافق مع الحجم.
أنشطة شفافة
الأنشطة الشفافة هي نتيجة أنماط خلفية شفافة، مثال:
<style name="Transparent" parent="AppTheme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
يمكن للمظاهر ذات الصلة بمربعات الحوار، مثل Theme.MaterialComponents.Dialog
،
تقوم بتضمين أنماط تجعل الأنشطة شفافة.
لا تغطي الأنشطة الشفافة كل مساحة العرض المتاحة، مما يجعل يصعب إدارتها لأن مساحة العرض المتاحة يمكن أن تتغير بناءً على تغييرات الضبط، مثل دوران الجهاز وطي الجهاز وفتحه وضع النوافذ المتعددة.
المشكلة
يجب أن يتوافق النشاط الشفاف مع حدود أول نشاط مبهم أسفل النشاط الشفاف في حزمة نشاط المهمة. ومع ذلك، فإن قيمة يمكن أن يكون النشاط الذي يشغِّل مربع حوار الأذونات الترامبولين (نشاط يطلق نشاطًا آخر ثم يختفي) أو لذا، لا يمكن للنظام تحديد حدود نشاط الترامبولين الذي نشاط مربّع حوار الأذونات الشفافة
تحسين
تكتسب الأنشطة الشفافة قيودها من المستوى الأعلى معتم النشاط تحتها في حزمة نشاط المهمة. يجب أن يكون النشاط المبهم متاحة لدورة حياة النشاط الشفاف بالكامل، بدءًا من النشاط خلق الدمار. لهذا السبب، لا تطلق طلبات أذونات من وأنشطة الترامبولين.
إذا بدأ نشاط الترامبولين طلب إذن، فقد لا يكون المستخدم من رؤية مربع حوار الإذن لأن نشاط الترامبولين كان قبل أن يتمكن المستخدم من الرد على مربع الحوار، ربما تم حساب سمات نشاط مربّعات الحوار وموضعه بشكل غير صحيح.
يجب أن ترسل التطبيقات دائمًا طلبات الأذونات من الأنشطة المتبقية مرئية إلى أن يتخذ المستخدم قرارًا بالإذن.
زوايا مستديرة
يمكن أن يكون النشاط شفافًا بسبب نمط يحدد الخلفية الشفافية أو لأن محتويات النشاط لا تملأ مساحة العرض. إذا ملأ نشاط شفاف مساحة العرض المتاحة، يطبق النظام الزوايا الدائرية تلقائيًا على النشاط عند تهيئتها على إجراء ذلك من خلال الشركة المصنّعة للجهاز. ولكن، إذا كان النشاط الشفاف (مثل مربع حوار الأذونات) لا يملأ المساحة المتوفرة، فالأمر متروك لك لتحديد ما إذا كان ينبغي تطبيق الزوايا الدائرية أم لا.
لا تملأ مربّعات حوار الأذونات مساحة العرض المتاحة لأن مربّع الحوار عادةً ما يستخدم LayoutParams.WRAP_CONTENT بدلاً من LayoutParams.MATCH_PARENT.
حل بديل التوافق
إبقاء الأنشطة التي تشغِّل أنشطة مربّعات الحوار مرئية إلى أن يختار المستخدم استجاب لمربع الحوار.
ويضمن النظام أن النشاط الشفاف يكتسب جميع القيود من أول نشاط مبهم أسفل النشاط الشفاف في حزمة الأنشطة، بما في ذلك القيود المتعلقة بما يلي:
- وضع توافق الحجم
- الاتجاه
- نسبة العرض إلى الارتفاع
ألعاب الوحدة
يتم تشغيل ألعاب Unity على نظام Android بملء الشاشة أو في وضع النوافذ المتعددة. ومع ذلك، تفقد العديد من ألعاب Unity التركيز وتتوقّف عن رسم المحتوى عند تثبيت التطبيق وضع النوافذ المتعددة.
المشكلة
أضافت Unity Resizable Window
.
في Unity 2019.4 لإتاحة وضع النوافذ المتعددة على Android. ومع ذلك،
لم يتفاعل التنفيذ الأولي مع دورة حياة النشاط في
وضع النوافذ المتعددة بشكل صحيح، مما يؤدي إلى
تعليق تشغيل UnityPlayer عندما يفقد التطبيق التركيز. عرض اللاعب
الشاشة السوداء أو الإطار الأخير المجمّد للّعبة. لا يتم استئناف اللعب إلا عند
نقر المستخدم على الشاشة. تواجه العديد من التطبيقات التي تستخدم محرّك Unity هذه المشكلة
في شكل نافذة سوداء في وضع النوافذ المتعددة
تحسين
عليك ترقية Unity إلى الإصدار 2019.4.40 أو إصدار أحدث وإعادة تصدير لعبتك. إبقاء
تم وضع علامة في مربّع الخيار "Resizable Window
".
إعدادات Android Player، أو
تتوقف اللعبة مؤقتًا عندما لا تكون في بؤرة التركيز برغم أن اللعبة مرئية بالكامل في
وضع النوافذ المتعددة.
حل بديل التوافق
يمكن للشركات المصنّعة للأجهزة تطبيق
OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS
إمكانية الإلغاء حسب التطبيق لتقديم حدث تركيز وهمي لأحد التطبيقات في
وضع النوافذ المتعددة. يتيح الإلغاء للنشاط إعادة رسم المحتوى
أن يتم حجبها.
اختبار تطبيقك بحثًا عن مشاكل التوافق
لاختبار تطبيقك وفهم سلوكه على مختلف أشكال الأجهزة، يجب الاستفادة من الموارد التالية:
- بثّ الجهاز: لاختبار تطبيقك على أجهزة الإنتاج (بما في ذلك الأجهزة المرجعية) المستضافة في مراكز بيانات Google، يمكنك الاطّلاع على بث أجهزة Android، بدعم من Firebase
- المحاكيات في Android Studio Hedgehog:للحصول على معلومات عن إنشاء للأجهزة المرجعية، راجع إنشاء الأجهزة الافتراضية وإدارتها
- محاكي Android Studio الذي يمكن تغيير حجمه: للحصول على معلومات حول الوصول إلى التطبيق الافتراضي راجع تشغيل التطبيقات على محاكي Android
مُعد للعرض على شاشة عريضة أفقيًا
تحقَّق من أن كل نشاط يمكنه استخدام كل مساحة العرض المتاحة للتطبيق. أولاً، يجب الإفصاح عن الرمز التالي في مجلد الاختبار:
Kotlin
fun Activity.isLetterboxed() : Boolean { if (isInMultiWindowMode) return false val wmc = WindowMetricsCalculator.getOrCreate() val currentBounds = wmc.computeCurrentWindowMetrics(this).bounds val maxBounds = wmc.computeMaximumWindowMetrics(this).bounds val isScreenPortrait = maxBounds.height() > maxBounds.width() return if (isScreenPortrait) { currentBounds.height() < maxBounds.height() } else { currentBounds.width() < maxBounds.width() } }
Java
public boolean isLetterboxed(Activity activity) { if (activity.isInMultiWindowMode()) { return false; } WindowMetricsCalculator wmc = WindowMetricsCalculator.getOrCreate(); Rect currentBounds = wmc.computeCurrentWindowMetrics(activity).getBounds() Rect maxBounds = wmc.computeMaximumWindowMetrics(activity).getBounds(); boolean isScreenPortrait = maxBounds.height() > maxBounds.width(); return (isScreenPortrait) ? currentBounds.height() < maxBounds.height() : currentBounds.width() < maxBounds.width(); }
ثم قم بإجراء اختبار لتأكيد السلوك والتأكد من أن النشاط المستهدف ليس مُعد للعرض على شاشة عريضة أفقيًا:
Kotlin
@get:Rule val activityRule = ActivityScenarioRule(MainActivity::class.java) @Test fun activity_launched_notLetterBoxed() { activityRule.scenario.onActivity { assertThat(it.isLetterboxed()).isFalse() } }
Java
@Rule public ActivityScenarioRule<MainActivity> rule = new ActivityScenarioRule<>(MainActivity.class); public void activity_launched_notLetterBoxed() { try (ActivityScenario<MainActivity> scenario = ActivityScenario.launch(MainActivity.class)) { scenario.onActivity(activity -> { assertThat(isLetterboxed(activity)).isFalse(); }); } }
سعيًا إلى المثالية، لا يتم إجراء هذا النوع من الاختبارات إلا إلى أن يجتاز الاختبار ويؤكد أنّ تطبيقك أن الأنشطة تشغل مساحة العرض بالكامل المتاحة للتطبيق. اختبار تطبيقك على جميع أنواع الأجهزة لضمان اتساق السلوك.
عمليات الإلغاء حسب التطبيق
يوفّر Android عمليات إلغاء تغيّر السلوك الذي تم ضبطه للتطبيقات. بالنسبة
على سبيل المثال، تطلب إلغاء FORCE_RESIZE_APP
لتجاوز وضع توافق الحجم وتغيير حجم التطبيق ليناسب الشاشة
السمات حتى إذا كانت قيمة resizeableActivity="false"
المحدد في بيان التطبيق.
تطبِّق الشركات المصنّعة للأجهزة عمليات الإلغاء على تطبيقات محدَّدة أو على جميع التطبيقات. أجهزة محددة ذات شاشة كبيرة. في نظام التشغيل Android 14 (المستوى 34 لواجهة برمجة التطبيقات) والإصدارات الأحدث، يتحدّث المستخدمون يمكنهم تطبيق عمليات الإلغاء على التطبيقات من خلال إعدادات الجهاز.
عمليات إلغاء المستخدم لكل تطبيق
في نظام التشغيل Android 14 والإصدارات الأحدث، تتيح قائمة الإعدادات للمستخدمين تغيير الجانب نسبة التطبيقات. الأجهزة ذات الشاشات الكبيرة مثل المرجع الأجهزة لتنفيذ القائمة.
تحتوي القائمة على قائمة بجميع التطبيقات المثبّتة على الجهاز. يختار المستخدمون للتطبيق ثم اضبط نسبة العرض إلى الارتفاع للتطبيق على 3:4 أو 1:1 أو ملء الشاشة أو قيمة أخرى من قِبل الشركة المصنّعة للجهاز. يمكن للمستخدمين أيضًا إعادة تعيين نسبة العرض إلى الارتفاع الإعداد التلقائي للتطبيق، والذي يتم تحديده في بيان التطبيق.
يمكن للتطبيقات إيقاف ميزة إلغاء التوافق من خلال ضبط علامات PackageManager.Property
التالية:
Property_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE
لإيقاف ميزة إلغاء توافق نسبة العرض إلى الارتفاع الخاصة بالمستخدم، أضِف الموقع. إلى بيان التطبيق وضبط القيمة على
false
:<application> <property android:name="android.window. PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE" android:value="false" /> </application>
سيتم استبعاد تطبيقك من قائمة التطبيقات في إعدادات الجهاز. المستخدمون لن يكون من الممكن إلغاء نسبة العرض إلى الارتفاع للتطبيق.
ولا يُحدث ضبط هذه السمة على
true
أي تأثير.Property_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE
إيقاف خيار ملء الشاشة للتوافق مع نسبة العرض إلى الارتفاع للمستخدم عليك إضافة السمة إلى بيان التطبيق وضبط القيمة على
false
:<application> <property android:name="android.window.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE" android:value="false" /> </application>
تمت إزالة خيار ملء الشاشة من قائمة خيارات نسبة العرض إلى الارتفاع في إعدادات الجهاز. لن يتمكن المستخدمون من تطبيق خيار "إلغاء ملء الشاشة" على تطبيقك.
وليس هناك أي تأثير لضبط هذه السمة على
true
.
تحسين تطبيقك لجميع الشاشات: لا تضبط قيودًا على نسبة العرض إلى الارتفاع في. تطبيقك. استخدام فئات حجم النافذة لتوفير خيارات التخطيطات استنادًا إلى مقدار مساحة العرض المتاحة.
عمليات الإلغاء حسب التطبيق للشركة المصنّعة للجهاز
تطبِّق الشركات المصنّعة للأجهزة عمليات الإلغاء على أساس كل تطبيق على أجهزة محدّدة. يمكن أن تطبّق الأجهزة المرجعية بعض عمليات الإلغاء على مجموعة متنوعة من التطبيقات بشكل افتراضي.
يمكن للتطبيقات إيقاف معظم عمليات الإلغاء (راجِع عمود "حسب التطبيق" الإلغاء أدناه).
يمكنك اختبار تطبيقك مع تفعيل عمليات الإلغاء أو إيقافها من خلال التوافق. إطار عمل التوافق (يمكنك الاطّلاع على أدوات إطار عمل التوافق). عند تفعيل هذا الإعداد، يتم تطبيق عمليات الإلغاء على التطبيق بالكامل.
يمكنك أيضًا استخدام Android Debug Bridge (adb) لتفعيل إيقاف عمليات الإلغاء وتحديد عمليات الإلغاء التي تنطبق على تطبيقك
يمكنك تفعيل عمليات الإلغاء أو إيقافها على النحو التالي:
adb shell am compat enable/disable <override name/id> <package>
بالنسبة إلى الأجهزة المرجعية، تحقَّق من عمليات الإلغاء التي تنطبق عليها تطبيقك:
adb shell dumpsys platform_compat | grep <package name>
يسرد الجدول التالي حالات الإلغاء المتاحة إلى جانب إرشادات حول كيفية تحسين تطبيقك كي لا يحتاج إلى الاعتماد على عمليات الإلغاء. يمكنك إضافة إلى بيان التطبيق لإيقاف بعض عمليات الإلغاء.
عمليات الإلغاء حسب التطبيق | |||
---|---|---|---|
النوع | الاسم | رقم التعريف | الوصف |
إمكانية إعادة التعديل | FORCE_RELENGTH_APP | 174042936 | لتجاوز وضع توافق الحجم للتطبيق عند تغييرات الإعدادات. |
FORCE_NON_RELOCATION_APP | 181136395 | يفرض على التطبيق الدخول في وضع التوافق مع الحجم عند تغيير الإعداد. | |
نسبة العرض إلى الارتفاع | OVERRIDE_MIN_ASPECT_RATIO | 174042980 | تجاوز سياسة البوابة التي يجب تفعيلها لتطبيق أي عمليات إلغاء أخرى لنسبة العرض إلى الارتفاع |
OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY | 203647190 | في حال تفعيل هذه السياسة (الإعداد التلقائي)، يتم إلغاء النطاق على الأنشطة في الوضع العمودي فقط. | |
OVERRIDE_MIN_ASPECT_RATIO_MEDIUM | 180326845 | تغيّر الحدّ الأدنى لنسبة العرض إلى الارتفاع إلى 3:2. | |
OVERRIDE_MIN_ASPECT_RATIO_LARGE | 180326787 | تغيير الحد الأدنى لنسبة العرض إلى الارتفاع إلى 16:9 | |
OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN | 208648326 | يغيّر هذا الخيار الحدّ الأدنى لنسبة العرض إلى الارتفاع ليتناسب مع% 50 من حجم العرض (أو نسبة العرض إلى الارتفاع في وضع تقسيم الشاشة). | |
OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN | 218959984 | يؤدي هذا الخيار إلى إلغاء الحدّ الأدنى لنسبة العرض إلى الارتفاع بحيث تعمل التطبيقات في وضع ملء الشاشة عندما يكون الجهاز في الوضع العمودي. | |
الاتجاه | OVERRIDE_ANY_ORIENTATION | 265464455 | لتمكين إلغاء أي اتجاه. |
OVERRIDE_ANY_ORIENTATION_TO_USER | 310816437 | لإلغاء القيود المفروضة على الاتجاه وقابلية إعادة التعديل ونسبة العرض إلى الارتفاع. | |
OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT | 265452344 | يتم إلغاء الاتجاه ليصبح رأسيًا عندما يكون للنشاط اتجاه غير محدَّد. | |
OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR | 265451093 | يتم إلغاء الاتجاه ليكون nosensor (استخدِم الاتجاه الطبيعي للجهاز) عندما يكون للنشاط اتجاه غير محدد. |
|
OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE | 266124927 | تدوير التطبيقات في الوضع الأفقي فقط بزاوية 180 درجة | |
OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA | 265456536 | تحدد هذه السياسة نطاق إلغاء الاتجاه بالوقت الذي يكون فيه التطبيق مرتبطًا بالكاميرا. | |
OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION | 255940284 | لضبط العرض على الاتجاه الطبيعي الأفقي للمهمة في وضع ملء الشاشة (بما في ذلك عند عرضها في شاشة عريضة أفقيًا). | |
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION | 254631730 | وتتجاهل طلبات الاتجاهات من التطبيق لتجنُّب التكرارات اللانهائية للتدوير. | |
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED | 273509367 | وتتجاهل طلبات الاتجاهات المتكررة أثناء إعادة تشغيل أحد الأنشطة. إذا اكتشف Android أنّ أحد التطبيقات يطلب اتجاهين جديدين على الأقل في غضون ثانية واحدة، يعتبر النظام هذا الإجراء تكرارًا لا نهائي للدوران ويطبّق الإلغاء. | |
OVERRIDE_RESPECT_REQUESTED_ORIENTATION | 236283604 | لمنع عرض المحتوى على شاشة عريضة أفقيًا من خلال إيقاف إعداد تجاهل طلب الاتجاه من الشركة المصنّعة للجهاز. | |
واجهات برمجة تطبيقات Sandbox | NEVER_SANDBOX_DISPLAY_APIS | 184838306 | يمنع هذا الإعداد تغيير سلوك أي من واجهات برمجة تطبيقات العرض. |
ALWAYS_SANDBOX_DISPLAY_APIS | 185004937 | تؤدي هذه السياسة إلى فرض عرض حدود التطبيق في واجهات برمجة تطبيقات Display في التطبيق. تعرض واجهات برمجة التطبيقات Display حدود منطقة العرض المنطقية، لكن التطبيق يفترض أحيانًا أن تعرض واجهات برمجة تطبيقات Display حدود التطبيق، ما يؤدي إلى حدوث مشاكل في واجهة المستخدم. |
|
OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS | 237531167 | تفرض هذه السياسة على واجهات برمجة تطبيقات View المُستخدَمة في التطبيق عرض حدود التطبيق. تعرض واجهات برمجة التطبيقات View حدود منطقة العرض المنطقية، لكن التطبيق يفترض أحيانًا أن تعرض واجهات برمجة تطبيقات View حدود التطبيق، ما يؤدي إلى حدوث مشاكل في واجهة المستخدم. |
|
الكاميرا المتوافقة | OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION | 263959004 | يؤدي هذا الوضع إلى إيقاف فرض التدوير. يتم فرض تدوير جميع تطبيقات الكاميرا ذات الاتجاه الثابت تلقائيًا عندما تكون معاينة الكاميرا مفتوحة. |
OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH | 264304459 | يزيل التحديث الثابت التلقائي الذي يتم تطبيقه عند فرض تدوير معاينة الكاميرا. | |
OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE | 264301586 | تبديل عملية إعادة التحميل الثابتة إلى عملية إعادة تحميل خفيفة عند فرض تدوير معاينة الكاميرا، ما يساعد في الحفاظ على الحالة أثناء فرض التدوير. يطبِّق Android تلقائيًا عملية إعادة تحميل تام عند فرض تدوير معاينة الكاميرا. يمكن أن يتسبب التحديث الثابت في حدوث مشاكل عندما تفقد حالة التطبيقات أو يتم حجبها استنادًا إلى الطريقة التي خزّنت بها التطبيقات حالتها السابقة مؤقتًا. | |
OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT | 250678880 | لاقتصاص المخزن المؤقت للصورة في الكاميرا الأمامية الداخلية. وفي حال إيقاف ميزة الإلغاء، تتم إزالة اقتصاص الكاميرا الأمامية الداخلية وزيادة مجال رؤية معاينة الكاميرا. في بعض الأجهزة القابلة للطيّ (راجِع الأجهزة المرجعية)، يقتصّ النظام معاينة الكاميرا لجميع تطبيقات الكاميرا عند استخدام الكاميرا الأمامية الداخلية تلقائيًا. | |
متنوعة | OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS | 263259275 | تمنع هذه الإعدادات حجب التطبيق عند فقدان التركيز عليه في وضع تقسيم الشاشة. ينتظر التطبيق التركيز قبل رسم محتوى التطبيق، ما قد يؤدي إلى توقُّفه أو حجبه. وتتيح عملية الإلغاء لنظام التشغيل Android إرسال حدث تركيز وهمي إلى التطبيق، ما يرسل إشارة إلى التطبيق لبدء رسم المحتوى مرّة أخرى. |
تطبيق FORCE_REsize_APP
تفرض هذه السياسة إمكانية تغيير حجم الحِزم التي يتم تطبيق الإلغاء عليها. cannot translate تغيير ما إذا كان يمكن تشغيل التطبيق في وضع النوافذ المتعددة، مع السماح لتغيير الحجم بدون الدخول في وضع توافق الحجم عند تغيير حجم الشاشة.
كيف يمكن للتطبيقات تحقيق النتيجة نفسها التي تحققها عند الإلغاء
في بيان التطبيق، يمكنك إما تعيين
android:resizeableActivity
إلى true
أو إلى
تتيح تغيير الحجم مع إيقاف وضع النوافذ المتعددة باستخدام
android:resizeableActivity=false
، ضبط android.supports_size_changes
علامة على البيانات الوصفية إلى true
.
كيفية تحسين التطبيقات
استخدم التخطيطات سريعة الاستجابة أو التكيفية لتمكين التطبيقات من التكيّف مع جميع أحجام الشاشات نِسب العرض إلى الارتفاع: عرض التوافق مع أحجام الشاشات المختلفة
كيفية إيقاف الإلغاء أو إيقافه
ضبط علامة السمة PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES
على
false
علامات الخصائص لتعديل الإلغاء
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES"
android:value="true|false"/>
أوامر adb لاختبار الإلغاء
لتطبيق الإلغاء وتغيير حجم التطبيق، اتّبِع الخطوات التالية:
adb shell am compat enable FORCE_RESIZE_APP <package>
لإزالة الإلغاء:
adb shell am compat disable FORCE_RESIZE_APP <package>
ملاحظة: يتمّ تطبيق الأوامر بشكل مؤقت فقط أو إزالتها.
FORCE_NON_REING_APP
تفرض أن تكون الحِزم التي يتم تطبيق الإلغاء عليها غير قابلة لتغيير الحجم دخول وضع توافق الحجم عند تغييرات التهيئة.
كيف يمكن للتطبيقات تحقيق النتيجة نفسها التي تحققها عند الإلغاء
يجب ضبط كل من السمة android:resizeableActivity
تم الإبلاغ عن البيانات الوصفية android.supports_size_changes
إلى false
في بيان التطبيق
وتوضح إما تقييد الاتجاه أو نسبة العرض إلى الارتفاع.
كيفية تحسين التطبيقات
يجب أن تحتوي جميع التطبيقات التي تعمل بشكل جيد على
تم ضبط android:resizeableActivity
أو android.supports_size_changes
على true
.
يجب تحسين التطبيقات الأخرى لتعمل بشكل جيد عند تغيير حجمها. عرض
android:resizeableActivity.
كيفية إيقاف الإلغاء أو إيقافه
ضبط علامة السمة PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES
على
false
علامات الخصائص لتعديل الإلغاء
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES"
android:value="true|false"/>
أوامر adb لاختبار الإلغاء
لتطبيق الإلغاء وجعل التطبيق لا يمكن تغيير حجمه:
adb shell am compat enable FORCE_NON_RESIZE_APP <package>
لإزالة الإلغاء:
adb shell am compat disable FORCE_NON_RESIZE_APP <package>
ملاحظة: يتمّ تطبيق الأوامر بشكل مؤقت فقط أو إزالتها.
OVERRIDE_MIN_ASPECT_RATIO
يراقب جميع عمليات الإلغاء التي تفرض حدًا أدنى معيّنًا لنسبة العرض إلى الارتفاع.
كيف يمكن للتطبيقات تحقيق النتيجة نفسها التي تحققها عند الإلغاء
يمكنك ضبط السمة android:minAspectRatio
على مستوى النشاط أو التطبيق.
كيفية تحسين التطبيقات
لا تضبط أي قيود على نسبة العرض إلى الارتفاع في تطبيقك. تأكد من أن تطبيقك يتوافق مع
لأحجام الشاشات المختلفة. استخدام فئات حجم النافذة
لإتاحة تخطيطات مختلفة استنادًا إلى المساحة التي يشغلها التطبيق على
الشاشة. الاطّلاع على Compose WindowSizeClass
API
وعرض واجهة برمجة التطبيقات WindowSizeClass
كيفية إيقاف الإلغاء أو إيقافه
حدِّد قيودًا على نسبة العرض إلى الارتفاع أو اضبط علامة السمة
PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE
إلى false
علامات الخصائص لتعديل الإلغاء
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE"
android:value="false"/>
أوامر adb لاختبار الإلغاء
لتطبيق خيار الإلغاء:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO <package>
لإزالة الإلغاء:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO <package>
ملاحظة: يتمّ تطبيق الأوامر بشكل مؤقت فقط أو إزالتها.
OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY
تفرض هذه السياسة قيودًا على إعدادات التطبيقات التي تفرض حدًا أدنى معيّنًا لنسبة العرض إلى الارتفاع في الأنشطة.
مع الاتجاه الرأسي فقط. يتم تفعيلها تلقائيًا ولا تسري إلا
إذا كانت OVERRIDE_MIN_ASPECT_RATIO
مفعّلة أيضًا.
كيف يمكن للتطبيقات تحقيق النتيجة نفسها التي تحققها عند الإلغاء
راجع OVERRIDE_MIN_ASPECT_RATIO.
كيفية تحسين التطبيقات
راجع OVERRIDE_MIN_ASPECT_RATIO.
كيفية إيقاف الإلغاء أو إيقافه
راجع OVERRIDE_MIN_ASPECT_RATIO.
علامات الخصائص لتعديل الإلغاء
راجع OVERRIDE_MIN_ASPECT_RATIO.
أوامر adb لاختبار الإلغاء
لتطبيق خيار الإلغاء:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY <package>
لإزالة الإلغاء:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY <package>
ملاحظة: يتمّ تطبيق الأوامر بشكل مؤقت فقط أو إزالتها.
OVERRIDE_MIN_ASPECT_RATIO_MEDIUM
يضبط الحد الأدنى لنسبة العرض إلى الارتفاع للنشاط على قيمة متوسطة (3:2)
كيف يمكن للتطبيقات تحقيق النتيجة نفسها التي تحققها عند الإلغاء
راجع OVERRIDE_MIN_ASPECT_RATIO.
كيفية تحسين التطبيقات
راجع OVERRIDE_MIN_ASPECT_RATIO.
كيفية إيقاف الإلغاء أو إيقافه
راجع OVERRIDE_MIN_ASPECT_RATIO.
علامات الخصائص لتعديل الإلغاء
راجع OVERRIDE_MIN_ASPECT_RATIO.
أوامر adb لاختبار الإلغاء
لتطبيق خيار الإلغاء:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_MEDIUM <package>
لإزالة الإلغاء:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_MEDIUM <package>
ملاحظة: يتمّ تطبيق الأوامر بشكل مؤقت فقط أو إزالتها.
OVERRIDE_MIN_ASPECT_RATIO_LARGE
تعيين الحد الأدنى لنسبة العرض إلى الارتفاع للنشاط على قيمة كبيرة (16:9)
كيف يمكن للتطبيقات تحقيق النتيجة نفسها التي تحققها عند الإلغاء
راجع OVERRIDE_MIN_ASPECT_RATIO.
كيفية تحسين التطبيقات
راجع OVERRIDE_MIN_ASPECT_RATIO.
كيفية إيقاف الإلغاء أو إيقافه
راجع OVERRIDE_MIN_ASPECT_RATIO.
علامات الخصائص لتعديل الإلغاء
راجع OVERRIDE_MIN_ASPECT_RATIO.
أوامر adb لاختبار الإلغاء
لتطبيق خيار الإلغاء:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_LARGE <package>
لإزالة الإلغاء:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_LARGE <package>`
ملاحظة: يتمّ تطبيق الأوامر بشكل مؤقت فقط أو إزالتها.
OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN
تتيح هذه السياسة استخدام نسبة العرض إلى الارتفاع في وضع تقسيم الشاشة. يسمح هذا الإذن للتطبيق باستخدام جميع المساحة المتوفرة في وضع تقسيم الشاشة، مع تجنُّب الأشرطة الأفقية.
كيف يمكن للتطبيقات تحقيق النتيجة نفسها التي تحققها عند الإلغاء
راجع OVERRIDE_MIN_ASPECT_RATIO.
كيفية تحسين التطبيقات
راجع OVERRIDE_MIN_ASPECT_RATIO.
كيفية إيقاف الإلغاء أو إيقافه
راجع OVERRIDE_MIN_ASPECT_RATIO.
علامات الخصائص لتعديل الإلغاء
راجع OVERRIDE_MIN_ASPECT_RATIO.
أوامر adb لاختبار الإلغاء
لتطبيق خيار الإلغاء:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN <package>
لإزالة الإلغاء:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN <package>
ملاحظة: يتمّ تطبيق الأوامر بشكل مؤقت فقط أو إزالتها.
OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN
يؤدي هذا الخيار إلى إيقاف خيار إلغاء الحدّ الأدنى لنسبة العرض إلى الارتفاع في وضع ملء الشاشة العمودي لاستخدام الكل. مساحة الشاشة المتاحة.
كيف يمكن للتطبيقات تحقيق النتيجة نفسها التي تحققها عند الإلغاء
راجع OVERRIDE_MIN_ASPECT_RATIO.
كيفية تحسين التطبيقات
راجع OVERRIDE_MIN_ASPECT_RATIO.
كيفية إيقاف الإلغاء أو إيقافه
راجع OVERRIDE_MIN_ASPECT_RATIO.
علامات الخصائص لتعديل الإلغاء
راجع OVERRIDE_MIN_ASPECT_RATIO.
أوامر adb لاختبار الإلغاء
لتطبيق خيار الإلغاء:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN <package>
لإزالة الإلغاء:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN <package>
ملاحظة: يتمّ تطبيق الأوامر بشكل مؤقت فقط أو إزالتها.
OVERRIDE_ANY_ORIENTATION
لتمكين إجراءات التجاوز التالية من تجاوز أي اتجاه:
- OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT
- OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR
- OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE
كيف يمكن للتطبيقات تحقيق النتيجة نفسها التي تحققها عند الإلغاء
ضبط سمة البيان activity:screenOrientation
أو استخدام واجهة برمجة تطبيقات Activity#setRequestedOrientation()
كيفية تحسين التطبيقات
يجب أن يتوافق تطبيقك مع جميع الاتجاهات. تغيير الاتجاه هو
تغيير في التهيئة، والذي يمكن التعامل معه بطريقتين: السماح
تدمير التطبيق وإعادة إنشائه أو إدارة تغييرات الضبط
نفسك. إذا كنت تدير تغييرات الضبط بنفسك، يمكن تغيير حالة التطبيق
تم الاحتفاظ بها من خلال استخدام ViewModel
. في حالات محدودة للغاية، يمكنك أن تقرر قفل
الاتجاه على الشاشات الصغيرة فقط، رغم أن ذلك قد لا يؤدي إلى تغيير حجمه
السماح للمستخدم بتدوير التطبيق حسب الحاجة. في نظام التشغيل Android 12L والإصدارات الأحدث،
يمكن إلغاء الاتجاه الثابت من خلال إعداد الجهاز. لمزيد من المعلومات،
معلومات حول التعامل مع تغييرات التهيئة ودعم جميع
الاتجاهات، يمكنك الاطّلاع على القسم التعامل مع التغييرات في إعدادات التعامل مع البيانات.
نظرة عامة على ViewModel، وتم حظر اتجاه التطبيق على
على الهواتف ولكن ليس على الأجهزة ذات الشاشات الكبيرة.
كيفية إيقاف الإلغاء أو إيقافه
ضبط علامة السمة
PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE
إلى false
.
علامات الخصائص لتعديل الإلغاء
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE"
android:value="true|false"/>
أوامر adb لاختبار الإلغاء
لتطبيق خيار الإلغاء:
adb shell am compat enable OVERRIDE_ANY_ORIENTATION <package>
لإزالة الإلغاء:
adb shell am compat disable OVERRIDE_ANY_ORIENTATION <package>
ملاحظة: يتمّ تطبيق الأوامر بشكل مؤقت فقط أو إزالتها.
OVERRIDE_ANY_ORIENTATION_TO_USER
لتفعيل التطبيق من ملء مساحة العرض المتاحة. يتجاهل أي اتجاه،
وقيود قابلية التعديل ونسبة العرض إلى الارتفاع المحدّدة في بيان التطبيق. كذلك
أي مكالمات إلى
Activity#setRequestedOrientation()
كيف يمكن للتطبيقات تحقيق النتيجة نفسها التي تحققها عند الإلغاء
عدم ضبط بيان
android:screenOrientation
أو اضبط السمة على"user"
.ضبط بيان
android:resizeableActivity
إلىtrue
.على الشاشات الصغيرة، لإتاحة تغيير حجم التطبيق مع إيقاف النوافذ المتعددة مع
android:resizeableActivity=false
، اضبط تم الإبلاغ عن البيانات الوصفيةandroid.supports_size_changes
إلىtrue
. عدم الضبطminAspectRatio
وmaxAspectRatio
كيفية تحسين التطبيقات
تفعيل تطبيقك للتوافق مع جميع الاتجاهات عدم ضبط screenOrientation
المحددة في بيان التطبيق. دعم قابلية تغيير حجم التطبيق،
وضع النوافذ المتعددة، وجميع نسب العرض إلى الارتفاع عن طريق تعيين
android:resizeableActivity
في ملف بيان التطبيق لـ true
. عرض
التوافق مع أحجام الشاشات المختلفة
كيفية إيقاف الإلغاء أو إيقافه
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
علامات الخصائص لتعديل الإلغاء
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
أوامر adb لاختبار الإلغاء
لتطبيق خيار الإلغاء:
adb shell am compat enable OVERRIDE_ANY_ORIENTATION_TO_USER <package>
لإزالة الإلغاء:
adb shell am compat disable OVERRIDE_ANY_ORIENTATION_TO_USER <package>
ملاحظة: يتمّ تطبيق الأوامر بشكل مؤقت فقط أو إزالتها.
OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT
تعمل هذه السياسة على تفعيل الاتجاه العمودي لجميع الأنشطة في الحزمة. إلا تم تمكين OVERRIDE_ANY_ORIENTATION، تم إلغاء لا يتم استخدام إلا عندما لا يتم تحديد اتجاه ثابت آخر من خلال النشاط.
كيف يمكن للتطبيقات تحقيق النتيجة نفسها التي تحققها عند الإلغاء
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
كيفية تحسين التطبيقات
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
كيفية إيقاف الإلغاء أو إيقافه
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
علامات الخصائص لتعديل الإلغاء
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
أوامر adb لاختبار الإلغاء
لتطبيق خيار الإلغاء:
adb shell am compat enable OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT <package>
لإزالة الإلغاء:
adb shell am compat disable OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT <package>
ملاحظة: يتمّ تطبيق الأوامر بشكل مؤقت فقط أو إزالتها.
OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR
تفعيل اتجاه جهاز الاستشعار لجميع الأنشطة في طرد. ما لم تكن OVERRIDE_ANY_ORIENTATION تمكين، لا يتم استخدام الإلغاء إلا عندما لا يتم تحديد اتجاه ثابت آخر المحددة من قبل النشاط.
كيف يمكن للتطبيقات تحقيق النتيجة نفسها التي تحققها عند الإلغاء
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
كيفية تحسين التطبيقات
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
كيفية إيقاف الإلغاء أو إيقافه
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
علامات الخصائص لتعديل الإلغاء
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
أوامر adb لاختبار الإلغاء
لتطبيق خيار الإلغاء:
adb shell am compat enable OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR <package>
لإزالة الإلغاء:
adb shell am compat disable OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR <package>
ملاحظة: يتمّ تطبيق الأوامر بشكل مؤقت فقط أو إزالتها.
OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE
تفعيل الاتجاه العكسي العكسي لجميع الأنشطة في الحزمة. ما لم تكن OVERRIDE_ANY_ORIENTATION تمكين، لا يتم استخدام الإلغاء إلا عندما لا يتم تحديد اتجاه ثابت آخر المحددة من قبل النشاط.
كيف يمكن للتطبيقات تحقيق النتيجة نفسها التي تحققها عند الإلغاء
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
كيفية تحسين التطبيقات
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
كيفية إيقاف الإلغاء أو إيقافه
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
علامات الخصائص لتعديل الإلغاء
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
أوامر adb لاختبار الإلغاء
لتطبيق خيار الإلغاء:
adb shell am compat enable OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE <package>
لإزالة الإلغاء:
adb shell am compat disable OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE <package>
ملاحظة: يتمّ تطبيق الأوامر بشكل مؤقت فقط أو إزالتها.
OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA
الحدود OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT، OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR، أو OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE ليتم تطبيقها فقط عندما يكون اتصال الكاميرا نشطًا.
كيف يمكن للتطبيقات تحقيق النتيجة نفسها التي تحققها عند الإلغاء
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
كيفية تحسين التطبيقات
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
كيفية إيقاف الإلغاء أو إيقافه
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
علامات الخصائص لتعديل الإلغاء
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
أوامر adb لاختبار الإلغاء
لتطبيق خيار الإلغاء:
adb shell am compat enable OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA <package>
لإزالة الإلغاء:
adb shell am compat disable OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA <package>
ملاحظة: يتمّ تطبيق الأوامر بشكل مؤقت فقط أو إزالتها.
OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION
تعمل هذه السياسة على حصر اتجاه العرض على الاتجاه الطبيعي الأفقي عند استخدام استيفاء الشروط التالية:
- النشاط في وضع ملء الشاشة
- إيقاف خاصية المكوِّن
لم يتم تفعيل
PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE
- إعداد طلب تجاهل الاتجاه للشركة المصنّعة للجهاز مفعّل العرض
- الاتجاه الطبيعي للشاشة هو الوضع الأفقي
كيف يمكن للتطبيقات تحقيق النتيجة نفسها التي تحققها عند الإلغاء
غير منطبق. يجب حل المشكلة في منطق التطبيق.
كيفية تحسين التطبيقات
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
كيفية إيقاف الإلغاء أو إيقافه
ضبط علامة السمة
PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE
إلى false
.
علامات الخصائص لتعديل الإلغاء
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE"
android:value="true|false"/>
أوامر adb لاختبار الإلغاء
لتطبيق خيار الإلغاء:
adb shell am compat enable OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION <package>
لإزالة الإلغاء:
adb shell am compat disable OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION <package>
ملاحظة: يتمّ تطبيق الأوامر بشكل مؤقت فقط أو إزالتها.
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION
لتفعيل سياسة التوافق التي تتخطّى تعديل اتجاه التطبيق استجابةً للتطبيق
الاتصال بالرقم Activity#setRequestedOrientation()
عند استخدام التطبيق
إعادة إطلاق المنتج، أو تلقي علاج نشط لمصدر الكاميرا منه.
كيف يمكن للتطبيقات تحقيق النتيجة نفسها التي تحققها عند الإلغاء
ضبط علامة الموقع
PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION
إلى true
.
كيفية تحسين التطبيقات
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
كيفية إيقاف الإلغاء أو إيقافه
ضبط علامة الموقع
PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION
إلى false
.
علامات الخصائص لتعديل الإلغاء
<property android:name="android.window.PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION"
android:value="true|false"/>
أوامر adb لاختبار الإلغاء
لتطبيق خيار الإلغاء:
adb shell am compat enable OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION <package>
لإزالة الإلغاء:
adb shell am compat disable OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION <package>
ملاحظة: يتمّ تطبيق الأوامر بشكل مؤقت فقط أو إزالتها.
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
تفعيل سياسة التوافق التي تتجاهل الاتجاه المطلوب للتطبيق في
الرَّدّْ عَلَى مُكَالَمَة التَّطْبِيقْ
Activity#setRequestedOrientation()
أكثر من مرتين
في ثانية واحدة إذا لم يتم عرض النشاط ضمن شاشة عريضة أفقيًا في اتجاه ثابت
كيف يمكن للتطبيقات تحقيق النتيجة نفسها التي تحققها عند الإلغاء
غير منطبق. يجب حل المشكلة في منطق التطبيق.
كيفية تحسين التطبيقات
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
كيفية إيقاف الإلغاء أو إيقافه
ضبط علامة الموقع
من PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
إلى
false
علامات الخصائص لتعديل الإلغاء
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED"
android:value="false"/>
أوامر adb لاختبار الإلغاء
لتطبيق خيار الإلغاء:
adb shell am compat enable OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED <package>
لإزالة الإلغاء:
adb shell am compat disable OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED <package>
ملاحظة: يتمّ تطبيق الأوامر بشكل مؤقت فقط أو إزالتها.
OVERRIDE_RESPECT_REQUESTED_ORIENTATION
استبعاد الحِزم من سلوك طلب تجاهل الاتجاه الذي يمكن تفعيله الشركات المصنّعة للأجهزة في مساحة عرض أو للشاشة بالكامل.
كيف يمكن للتطبيقات تحقيق النتيجة نفسها التي تحققها عند الإلغاء
غير منطبق. يجب حل المشكلة في منطق التطبيق.
كيفية تحسين التطبيقات
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
كيفية إيقاف الإلغاء أو إيقافه
لا يمكن الإيقاف. قد يكون إيقاف ميزة "الإلغاء" خطيرًا إذا كان التطبيق غير متوافق. باستخدام جهاز يعرض الشركة المصنّعة للجهاز طلب الاتجاه الإعداد المُفعّل. التواصل مع مطوّر Android العلاقات لإيقاف الإلغاء.
علامات الخصائص لتعديل الإلغاء
ما مِن علامات خصائص لهذا الإلغاء.
أوامر adb لاختبار الإلغاء
لتطبيق خيار الإلغاء:
adb shell am compat enable OVERRIDE_RESPECT_REQUESTED_ORIENTATION <package>
لإزالة الإلغاء:
adb shell am compat disable OVERRIDE_RESPECT_REQUESTED_ORIENTATION <package>
ملاحظة: يتمّ تطبيق الأوامر بشكل مؤقت فقط أو إزالتها.
NEVER_SANDBOX_DISPLAY_APIS
يفرض عدم تطبيق وضع الحماية لواجهة برمجة التطبيقات في Display
على الحِزم مطلقًا
لنشاط وضع التوافق مع نظام العرض على شاشة عريضة أفقيًا أو الحجم. واجهات Display
API
مواصلة تقديم حدود منطقة العرض
كيف يمكن للتطبيقات تحقيق النتيجة نفسها التي تحققها عند الإلغاء
يمكنك تعريف الأنشطة التي يمكن تغيير حجمها عن طريق ضبط
android:resizeableActivity
سمة البيان إلى true
أو علامة android.supports_size_changes
الوصفية على true
.
كيفية تحسين التطبيقات
يجب عدم الاعتماد مطلقًا على حجم العرض في التطبيقات التي تعلن أنّها قابلة لتغيير حجمها بالكامل.
لتحديد موضع عناصر واجهة المستخدم. نقل بيانات تطبيقك إلى واجهات برمجة تطبيقات محدَّثة
تقديم WindowMetrics
. إذا كنت تستخدم Jetpack Compose، يمكنك الاستفادة من
WindowSizeClass
واجهة برمجة التطبيقات لرسم واجهة المستخدم استنادًا إلى حجم الشاشة
المساحة التي يحتوي عليها التطبيق على الشاشة الحالية. عرض
فئات حجم النوافذ:
كيفية إيقاف الإلغاء أو إيقافه
لا يمكن الإيقاف. نقل البيانات من واجهات برمجة التطبيقات المتوقّفة نهائيًا
علامات الخصائص لتعديل الإلغاء
ما مِن علامات خصائص لهذا الإلغاء.
أوامر adb لاختبار الإلغاء
لتطبيق خيار الإلغاء:
adb shell am compat enable NEVER_SANDBOX_DISPLAY_APIS <package>
لإزالة الإلغاء:
adb shell am compat disable NEVER_SANDBOX_DISPLAY_APIS <package>
ملاحظة: يتمّ تطبيق الأوامر بشكل مؤقت فقط أو إزالتها.
ALWAYS_SANDBOX_DISPLAY_APIS
يؤدي هذا الإعداد إلى فرض تطبيق وضع الحماية لواجهة برمجة التطبيقات في Display
دائمًا.
بغض النظر عن وضع النافذة. توفّر واجهات برمجة تطبيقات Display
دائمًا حدود التطبيق.
كيف يمكن للتطبيقات تحقيق النتيجة نفسها التي تحققها عند الإلغاء
تعريف الأنشطة التي لا يمكن تغيير حجمها عن طريق ضبط
android:resizeableActivity
إلى false
أو
تم الإبلاغ عن البيانات الوصفية في android.supports_size_changes
إلى false
.
كيفية تحسين التطبيقات
إنّ التطبيقات التي تعلن أنّها قابلة لتغيير حجمها بالكامل يجب ألا تعتمد مطلقًا على حجم العرض
موضع عناصر واجهة المستخدم. نقل تطبيقك من واجهات برمجة التطبيقات المتوقّفة نهائيًا إلى
واجهات برمجة تطبيقات محدَّثة توفّر WindowMetrics
. عرض
WindowMetricsCalculator
كيفية إيقاف الإلغاء أو إيقافه
لا يمكن الإيقاف. نقل البيانات من واجهات برمجة التطبيقات المتوقّفة نهائيًا
علامات الخصائص لتعديل الإلغاء
ما مِن علامات خصائص لهذا الإلغاء.
أوامر adb لاختبار الإلغاء
لتطبيق خيار الإلغاء:
adb shell am compat enable ALWAYS_SANDBOX_DISPLAY_APIS <package>
لإزالة الإلغاء:
adb shell am compat disable ALWAYS_SANDBOX_DISPLAY_APIS <package>
ملاحظة: يتمّ تطبيق الأوامر بشكل مؤقت فقط أو إزالتها.
OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS
يفرض هذا الإعداد في الحِزم وضع حماية لواجهات برمجة تطبيقات View
التالية على حدود النشاط:
كيف يمكن للتطبيقات تحقيق النتيجة نفسها التي تحققها عند الإلغاء
حل المشكلة في رمز التطبيق باستخدام واجهات برمجة التطبيقات التي توفر حدود نافذة التطبيق والإزاحات المتعلقة بنافذة التطبيق بدلاً من حدود شاشة الجهاز والإزاحة بالنسبة إلى شاشة الجهاز.
كيفية تحسين التطبيقات
يجب أن تستخدم التطبيقات واجهات برمجة تطبيقات View
، مع الأخذ في الاعتبار إمكانية عرض المحتوى على شاشة عريضة أفقيًا
ووضع النوافذ المتعددة المطبق على التطبيق. عرض
WindowMetricsCalculator
كيفية إيقاف الإلغاء أو إيقافه
ضبط علامة الموقع
PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS
إلى false
.
علامات الخصائص لتعديل الإلغاء
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS"
android:value="false"/>
أوامر adb لاختبار الإلغاء
لتطبيق خيار الإلغاء:
adb shell am compat enable OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS <package>
لإزالة الإلغاء:
adb shell am compat disable OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS <package>
ملاحظة: يتمّ تطبيق الأوامر بشكل مؤقت فقط أو إزالتها.
OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION
لإيقاف فرض التدوير. يحسِّن تجربة المستخدم في بعض التطبيقات.
كيف يمكن للتطبيقات تحقيق النتيجة نفسها التي تحققها عند الإلغاء
ضبط علامة الموقع
PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION
إلى false
.
كيفية تحسين التطبيقات
لا تعتمد على اتجاه أداة استشعار الكاميرا المخزنة مؤقتًا أو معلومات الجهاز. بالنسبة إرشادات التوافق مع الكاميرا، الاطّلاع على مقدمة حول عدسة الكاميرا والدعم الأسطح التي يمكن تغيير حجمها في الكاميرا .
كيفية إيقاف الإلغاء أو إيقافه
ضبط علامة الموقع
PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION
إلى true
.
علامات الخصائص لتعديل الإلغاء
<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION"
android:value="true|false"/>
أوامر adb لاختبار الإلغاء
لتطبيق الإلغاء، الذي يزيل فرض التدوير:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>
لإزالة الإلغاء الذي يسمح بفرض التناوب:
adb shell am compat disable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>
ملاحظة: يتمّ تطبيق الأوامر بشكل مؤقت فقط أو إزالتها.
OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH
لإيقاف إعادة تحميل النشاط بعد فرض التدوير. تحسين تجربة المستخدم عندما تتسبب إعادة التحميل في فقدان الحالة في التطبيقات.
كيف يمكن للتطبيقات تحقيق النتيجة نفسها التي تحققها عند الإلغاء
ضبط علامة الموقع
PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH
إلى false
.
كيفية تحسين التطبيقات
عرض OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION.
كيفية إيقاف الإلغاء أو إيقافه
ضبط علامة الموقع
PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH
إلى true
.
علامات الخصائص لتعديل الإلغاء
<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH"
android:value="true|false"/>
أوامر adb لاختبار الإلغاء
لتطبيق الإلغاء، الذي يزيل إعادة تحميل النشاط:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH <package>
لإزالة الإلغاء الذي يسمح بإعادة تحميل النشاط:
adb shell am compat disable OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH <package>
ملاحظة: يتمّ تطبيق الأوامر بشكل مؤقت فقط أو إزالتها.
OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE
لإنشاء الحزم التي يتم تطبيقها لإعادة تحميل النشاط باستخدام onResume()
→ onPause()
→ onResume()
دورة بدلاً من onResume()
→
onStop()
← onResume()
بعد فرض تدوير التوافق مع الكاميرا.
كيف يمكن للتطبيقات تحقيق النتيجة نفسها التي تحققها عند الإلغاء
ضبط علامة الموقع
PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE
إلى true
.
كيفية تحسين التطبيقات
عرض OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION.
كيفية إيقاف الإلغاء أو إيقافه
ضبط علامة الموقع
PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE
إلى false
.
علامات الخصائص لتعديل الإلغاء
<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE"
android:value="true|false"/>
أوامر adb لاختبار الإلغاء
لتطبيق خيار الإلغاء:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE <package>
لإزالة الإلغاء:
adb shell am compat disable OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE <package>
ملاحظة: يتمّ تطبيق الأوامر بشكل مؤقت فقط أو إزالتها.
OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT
لفرض اقتصاص مخرجات الكاميرا في الاتجاه المعاكس في الوضع العمودي لا يتوافق اتجاه الكاميرا مع الاتجاه الطبيعي للجهاز. تطبيقات عديدة لا تتعامل مع هذا الموقف وتعرض الصور التي تم تمديدها بخلاف ذلك.
كيف يمكن للتطبيقات تحقيق النتيجة نفسها التي تحققها عند الإلغاء
ضبط علامة الموقع
PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT
إلى true
.
كيفية تحسين التطبيقات
عرض OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION.
كيفية إيقاف الإلغاء أو إيقافه
ضبط علامة الموقع
PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT
إلى false
.
علامات الخصائص لتعديل الإلغاء
<property android:name="android.camera.PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT"
android:value="true|false"/>
أوامر adb لاختبار الإلغاء
لتطبيق خيار الإلغاء الذي يطبّق اقتصاص الكاميرا الأمامية الداخلية:
adb shell am compat enable OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT <package>
لإزالة خيار الإلغاء الذي يزيل اقتصاص الكاميرا الأمامية الداخلية:
adb shell am compat disable OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT <package>
ملاحظة: يتمّ تطبيق الأوامر بشكل مؤقت فقط أو إزالتها.
OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION
لمنع التطبيقات من إيقاف مشاركة شاشة التطبيقات (يُرجى الاطّلاع على
عرض الوسائط). يتم تنفيذه عندما تسيء التطبيقات استخدام
createConfigForDefaultDisplay()
واجهة برمجة التطبيقات المطلوب فرضها
التقاط صور بملء الشاشة أو تعرُّض خصوصية المستخدم للخطر من خلال الكشف عن المحتوى
من الإشعارات، التي يتم التقاطها بملء الشاشة وليس بملء شاشة التطبيق
ومشاركة البيانات، وجميع التطبيقات بغض النظر عن وضع النافذة.
كيف يمكن للتطبيقات تحقيق النتيجة نفسها التي تحققها عند الإلغاء
السماح بالسلوك التلقائي لعرض الوسائط (يتم تنفيذه في نظام التشغيل Android 14 وواجهة برمجة التطبيقات)
المستوى 34، مع createScreenCaptureIntent()
)،
التي تتيح للمستخدمين اختيار مشاركة الشاشة بأكملها أو استخدام تطبيق واحد
بغض النظر عن وضع النافذة. أو اتصل
createScreenCaptureIntent(MediaProjectionConfig)
مع وسيطة MediaProjectionConfig
تم عرضها من
مكالمة إلى createConfigForUserChoice()
.
كيفية تحسين التطبيقات
السماح للمستخدمين باختيار مشاركة شاشة الجهاز بالكامل أو تطبيق نافذة أثناء عرض الوسائط، والذي سيكون السلوك التلقائي اعتبارًا من Android 14.
تغيير حجم التطبيق (resizeableActivity="true"
) ليصبح
إتاحة وضع النوافذ المتعددة.
كيفية إيقاف الإلغاء أو إيقافه
لا يمكن لتطبيقك إيقاف ميزة "العضوية في القنوات" أو إيقافها نظرًا لخطورة خصوصية المستخدم. لعملية الإلغاء هذه.
علامات الخصائص لتعديل الإلغاء
بلا عُري
أوامر adb لاختبار الإلغاء
لتطبيق خيار الإلغاء، ما يؤدي إلى إلغاء إيقاف مشاركة جزء من الشاشة في التطبيق (أي تفعيل المشاركة الجزئية للشاشة):
adb shell am compat enable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>
لإزالة الإلغاء، الذي يسمح للتطبيق بإيقاف جزء الشاشة المشاركة:
adb shell am compat disable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>
ملاحظة: يتمّ تطبيق الأوامر بشكل مؤقت فقط أو إزالتها.
أكثر من OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS
تفعيل إرسال التركيز الزائف للتطبيقات غير المركّزة في وضع تقسيم الشاشة بعض الإشعارات تنتظر محرّكات الألعاب التركيز قبل عرض محتوى التطبيق وهكذا، إنّ التركيز الزائف يساعد التطبيقات على تجنُّب حجبها عند استئنافها أو عدم إغلاقها. مع التركيز عليها.
كيف يمكن للتطبيقات تحقيق النتيجة نفسها التي تحققها عند الإلغاء
ضبط علامة الموقع
PROPERTY_COMPAT_ENABLE_FAKE_FOCUS
إلى
true
كيفية تحسين التطبيقات
يمكنك تجنُّب هذه المشكلة إذا كان تطبيقك يتعامل مع اتجاهات متعددة تغييرات التكوين بشكل جيد. يمكنك إعداد تطبيقك على شاشة كبيرة من خلال اتّباع إرشادات جودة التطبيقات ذات الشاشات الكبيرة
في حال تشغيل محرك لعبة Unity، يجب الترقية إلى الإصدار 2019.4.40 أو إصدار أحدث.
إعادة تصدير لعبتك الإبقاء على الخيار Resizable Window
تم التحقق منها في Android Player
الإعدادات.
كيفية إيقاف الإلغاء أو إيقافه
ضبط علامة الموقع
PROPERTY_COMPAT_ENABLE_FAKE_FOCUS
إلى
false
علامات الخصائص لتعديل الإلغاء
<property android:name="android.window.PROPERTY_COMPAT_ENABLE_FAKE_FOCUS"
android:value="true|false"/>
أوامر adb لاختبار الإلغاء
لتطبيق خيار الإلغاء:
adb shell am compat enable OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS <package>
لإزالة الإلغاء:
adb shell am compat disable OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS <package>
ملاحظة: يتمّ تطبيق الأوامر بشكل مؤقت فقط أو إزالتها.
مصادر إضافية
- إرشادات جودة التطبيقات ذات الشاشات الكبيرة
- إرشادات جودة التطبيقات الأساسية