الموارد هي الملفات الإضافية والمحتوى الثابت الذي تستخدمه التعليمات البرمجية، مثل الصور النقطية والتخطيط والتعريفات وسلاسل واجهة المستخدم وتعليمات الرسوم المتحركة والمزيد.
احرص دائمًا على إظهار موارد التطبيق الخارجية مثل الصور والسلاسل من لكي تتمكن من الحفاظ عليها بشكل مستقل. أيضًا، قم بتوفير موارد بديلة عمليات تهيئة أجهزة محددة عن طريق تجميعها في أدلة موارد ذات أسماء خاصة. علامة @ وقت التشغيل، يستخدم Android المورد المناسب استنادًا إلى الإعدادات الحالية. بالنسبة على سبيل المثال، قد ترغب في توفير تخطيط مختلف لواجهة المستخدم اعتمادًا على حجم الشاشة أو السلاسل اعتمادًا على إعداد اللغة.
بعد إزالة موارد التطبيق، يمكنك الوصول إليها
باستخدام معرّفات الموارد التي يتم إنشاؤها في الفئة R
الخاصة بمشروعك.
يوضّح لك هذا المستند كيفية تجميع الموارد في مشروع Android. كما يوضح لك كيف
لتوفير موارد بديلة لتهيئات أجهزة معينة ومن ثم الوصول إليها من
رمز تطبيقك أو ملفات XML الأخرى.
تجميع أنواع المراجع
ضع كل نوع من الموارد في دليل فرعي محدد من جدول مشروعك
دليل res/
. على سبيل المثال، إليك التسلسل الهرمي للملفات لمشروع بسيط:
MyProject/ src/ MyActivity.java res/ drawable/ graphic.png layout/ main.xml info.xml mipmap/ icon.png values/ strings.xml
يتضمّن الدليل res/
جميع الموارد في
أدلة فرعية: مورد صور، وموارد تنسيق، دليل mipmap/
لمشغِّل التطبيقات
والأيقونات وملف موارد السلسلة. المورد
أسماء الأدلة مهمة ويتم توضيحها في الجدول 1.
ملاحظة: لمزيد من المعلومات حول استخدام مجلدات mipmap، يُرجى الاطّلاع على ضَع رموز التطبيقات في أدلة mipmap.
الجدول 1. أدلة الموارد
داخل دليل المشروع res/
.
الدليل | نوع المورِد |
---|---|
animator/ |
ملفات XML التي تعرّف الخاصية والرسوم المتحركة. |
anim/ |
ملفات XML التي تعرّف ما قبل سن المراهقة
والرسوم المتحركة. يمكن أيضًا حفظ الرسوم المتحركة للخصائص في هذا الدليل، ولكن
يُفضّل استخدام دليل animator/ للإشارة إلى الصور المتحركة للسمات من أجل التمييز بين الاثنين
الأنواع. |
color/ |
ملفات XML التي تحدّد قائمة حالة من الألوان لمزيد من المعلومات، يُرجى الاطّلاع على اللون مورد قائمة الولايات. |
drawable/ |
ملفات الصور النقطية (PNG أو
لمزيد من المعلومات، يُرجى الاطّلاع على الموارد القابلة للرسم. |
mipmap/ |
ملفات قابلة للرسم لكثافات رموز مشغّل التطبيقات المختلفة لمزيد من المعلومات حول إدارة
رموز مشغّل التطبيقات مع mipmap/ مجلد، يمكنك الاطّلاع على
ضع أيقونات التطبيقات في
أدلة mipmap. |
layout/ |
ملفات XML التي تحدّد تنسيق واجهة المستخدم لمزيد من المعلومات، يُرجى الاطّلاع على مورد التنسيق. |
menu/ |
ملفات XML التي تحدد قوائم التطبيقات، مثل قائمة الخيارات أو قائمة السياق أو القائمة الفرعية. لمزيد من المعلومات، يُرجى الاطّلاع على مورد القائمة. |
raw/ |
الملفات العشوائية التي يتم حفظها في شكلها الأولي. لفتح هذه الموارد باستخدام قائمة
ومع ذلك، إذا كنت بحاجة إلى الوصول إلى أسماء الملفات الأصلية والتسلسل الهرمي للملفات،
حفظ الموارد في دليل |
values/ |
ملفات XML التي تحتوي على قيم بسيطة، مثل السلاسل والأعداد الصحيحة والألوان في حين أنّ ملفات موارد XML في الأدلة الفرعية الأخرى لبرامج نظرًا لأنه يتم تحديد كل مورد باستخدام عنصر XML الخاص به، يمكنك تسمية الملف أي شيء تريده ووضع أنواع موارد مختلفة في ملف واحد. ومع ذلك، للتوضيح، يمكنك تريد وضع أنواع موارد فريدة في ملفات مختلفة. على سبيل المثال، إليك بعض أسماء الملفات الاصطلاحات للموارد التي يمكنك إنشاؤها في هذا الدليل:
لمزيد من المعلومات، يُرجى الاطّلاع على موارد السلسلة، مرجع الأنماط مزيد من أنواع المراجع |
xml/ |
ملفات XML عشوائية يمكن قراءتها في وقت التشغيل من خلال طلب Resources.getXML() . ملفات إعداد XML متعددة
هنا، مثل إعدادات البحث.
|
font/ |
ملفات الخطوط ذات الامتدادات مثل TTF وOTF
أو ملفات TTC أو XML التي
تتضمَّن العنصر <font-family> . لمزيد من المعلومات عن
والخطوط كموارد، فتحقق
إضافة خط كمورد XML
|
تنبيه: ننصحك بعدم حفظ ملفات الموارد مباشرةً داخل
دليل res/
. يتسبب في خطأ في برنامج التجميع.
لمزيد من المعلومات حول أنواع الموارد الفردية، يُرجى الاطّلاع على نظرة عامة على أنواع الموارد.
الموارد التي تحفظها في الأدلّة الفرعية المحددة في الجدول 1 هي الموارد التلقائية الموارد. وهذا يعني أن هذه الموارد تحدد التصميم والمحتوى الافتراضيين لتطبيقك. ومع ذلك، قد تتطلب أنواع مختلفة من الأجهزة التي تعمل بنظام التشغيل Android أنواعًا مختلفة من الموارد.
على سبيل المثال، يمكنك توفير موارد تنسيق مختلفة للأجهزة التي يزيد حجمها عن المعتاد. الشاشات للاستفادة من مساحة الشاشة الإضافية. يمكنك أيضًا توفير موارد سلسلة مختلفة تترجم النص في واجهة المستخدم استنادًا إلى إعداد اللغة في الجهاز. لتوفير هذه الموارد المختلفة للأجهزة المختلفة من التهيئة، يلزمك توفير موارد بديلة بالإضافة إلى الموارد.
توفير مراجع بديلة
توفِّر معظم التطبيقات موارد بديلة للتوافق مع أجهزة معيّنة الإعدادات. على سبيل المثال، يمكنك تضمين موارد بديلة قابلة للرسم لمختلف وكثافات الشاشة وموارد السلسلة البديلة للغات المختلفة. في وقت التشغيل، Android بالإعدادات الحالية للجهاز وتحميل ملفات والموارد الخاصة بتطبيقك.
![](https://developer.android.google.cn/static/images/resources/resource_devices_diagram2.png?authuser=9&hl=ar)
الشكل 1. جهازان يستخدمان موارد تنسيق مختلفة بناءً على حجم الشاشة
لتحديد بدائل خاصة بالتهيئة لمجموعة من الموارد، قم بما يلي:
- إنشاء دليل جديد في
res/
باسم في النموذج<resources_name>-<qualifier>
<resources_name>
هو اسم الدليل للإعدادات التلقائية المقابلة. الموارد (محددة في الجدول 1).<qualifier>
هو اسم يحدّد إعدادات فردية التي سيتم استخدام هذه الموارد لها (محدد في الجدول 2).
يمكنك إضافة أكثر من
<qualifier>
واحد. فصل كل واحد بشرطة.تنبيه: عند إلحاق عدّة مؤهِّلات، عليك: ووضعها بنفس الترتيب الذي تم إدراجها به في الجدول 2. إذا كانت المؤهلات مرتبة بشكل غير صحيح، يتم تجاهل الموارد.
- احفظ الموارد البديلة المناسبة في هذا الدليل الجديد. يجب أن تكون ملفات الموارد بتسميته تمامًا مثل ملفات المورد الافتراضية.
على سبيل المثال، في ما يلي بعض الموارد التلقائية والبديلة:
res/ drawable/ icon.png background.png drawable-hdpi/ icon.png background.png
يشير مؤهِّل hdpi
إلى أنّ الموارد المتوفّرة في هذا الدليل مخصّصة للأجهزة التي تتضمن
وشاشة الكثافة العالية. يتم تغيير حجم الصور في هذه الأدلة القابلة للرسم حسب
بكثافات الشاشة، ولكن أسماء الملفات
الشيء نفسه. بهذه الطريقة، سيتم استخدام معرّف المورد الذي تستخدمه للإشارة إلى icon.png
أو
تظل صورة background.png
هي نفسها دائمًا. يختار Android
من كل مورد يتطابق على أفضل نحو مع الجهاز الحالي من خلال مقارنة الجهاز
معلومات التهيئة مع المؤهلات في اسم دليل الموارد.
تنبيه: عند تحديد مورد بديل، احرص على ما يلي:
أيضًا تعريف المورد في تهيئة افتراضية. وإلا، قد يواجه تطبيقك بيئة تشغيل
باستثناء عندما يغيّر الجهاز الإعدادات. على سبيل المثال، إذا أضفت سلسلة إلى فقط
values-en
وليس values
، قد يواجه تطبيقك
يحدث استثناء Resource Not Found
عندما يغيِّر المستخدم لغة النظام التلقائية.
يسرد الجدول 2 مؤهِّلات الضبط الصالحة حسب ترتيب الأولوية. يمكنك لإضافة عدة مؤهلات إلى اسم دليل واحد عن طريق فصل كل مؤهل بشرطة. في حال استخدام مؤهِّلات متعددة لدليل موارد، يجب إضافتها إلى اسم الدليل بالترتيب مدرجة في الجدول.
الجدول 2. مؤهِّل الإعدادات الأسماء.
الإعدادات | قِيم المؤهِّل | الوصف |
---|---|---|
مركز عملائي وMNC | أمثلة:mcc310
mcc208-mnc00
|
رمز بلد الجوّال (مركز عملائي)، متبوعًا برمز شبكة الجوّال (MNC) اختياريًا
من شريحة SIM في الجهاز. على سبيل المثال، نطاق إذا كان الجهاز يستخدم اتصالاً لاسلكيًا (أي أنه هاتف GSM)، فإن قيم مركز عملائي وMNC تصبح من شريحة SIM. ويمكنك أيضًا استخدام حساب "مركز عملائي" وحده، على سبيل المثال، لتضمين معايير قانونية والموارد في تطبيقك. إذا كنت تريد التحديد استنادًا إلى اللغة فقط، فاستخدم مؤهِّل اللغة والنص البرمجي (اختياري) والمنطقة (اختياري) بدلاً من ذلك. إذا كنت تستخدم حساب "مركز عملائي" مؤهل MNC، قم بذلك بعناية واختبر أنه يعمل على النحو المتوقع. اطّلِع أيضًا على حقلَي الإعداد |
اللغة والنص (اختياري) والمنطقة (اختياري) | أمثلة:en fr en-rUS fr-rFR fr-rCA b+en b+en+US b+es+419 b+zh+Hant b+sr+Latn+RS |
يتم تحديد اللغة برمز لغة مكوّن من حرفَين وفقًا لمعيار ISO 639-1، ويتم اختياره اختياريًا.
باستخدام رمز منطقة مكوّن من حرفَين وفقًا لمعيار ISO 3166-1-alpha-2 (ويسبقه
حالة الأحرف الصغيرة ليست الرموز حساسة لحالة الأحرف. البادئة قدّم إصدار Android 7.0 (مستوى واجهة برمجة التطبيقات 24) دعمًا BCP 47 علامات اللغة، التي يمكنك استخدامها لتحديد أهلية والموارد الخاصة بالمنطقة. تتكون علامة اللغة من سلسلة من علامة فرعية واحدة أو أكثر، تعمل كل منها على تحسين أو تضييق نطاق محدّدة بواسطة العلامة الشاملة. لمزيد من المعلومات عن يُرجى الاطّلاع على علامات التعرّف على اللغات. لاستخدام علامة لغة BCP 47، يمكنك إنشاء تسلسل بين
يمكن أن تتغير علامة اللغة خلال فترة تشغيل تطبيقك إذا يمكن للمستخدمين تغيير لغتهم في إعدادات النظام. للحصول على معلومات عن مدى تأثير ذلك في تطبيقك أثناء وقت التشغيل، يمكنك الاطّلاع على الاسم المعرِّف التغييرات في الإعدادات. للحصول على دليل كامل حول أقلمة تطبيقك للغات الأخرى، راجِع ترجمة تطبيقك. يمكنك أيضًا الاطّلاع على طريقة |
اتجاه التصميم | ldrtl ldltr |
اتجاه تنسيق التطبيق يمكن تطبيق ذلك على أي مورد، مثل التخطيطات أو العناصر القابلة للرسم أو القيم. على سبيل المثال، إذا كنت تريد توفير تخطيط معين للغة العربية لأي تخطيط آخر من "اليمين إلى اليسار" مثل الفارسية أو العبرية، يمكنك استخدام أدلة مثل ما يلي:
ملاحظة: لتفعيل ميزات التنسيق من اليمين إلى اليسار
لتطبيقك، يجب ضبط القيمة تمّت الإضافة في المستوى 17 من واجهة برمجة التطبيقات |
أصغر عرض | sw<N>dp أمثلة: sw320dp sw600dp sw720dp وهكذا. |
أقصر بُعد لمساحة الشاشة متاح للتطبيق.
وعلى وجه التحديد، يمثّل
على سبيل المثال، إذا كان التنسيق يتطلب أصغر أبعاد للشاشة
أن تكون المساحة أقل من 600 وحدة بكسل مستقلة الكثافة في جميع الأوقات، فيمكنك استخدام هذا المؤهل
أنشِئ موارد التنسيق في دليل استخدام أصغر عرض لتحديد يعد الحجم العام للشاشة مفيدًا لأن العرض غالبًا ما يكون العامل المؤثر في تصميم تخطيط. غالبًا ما تقوم واجهة المستخدم بالتمرير رأسيًا، ولكنها ذات صعوبة كبيرة إلى حد ما القيود على الحد الأدنى للمساحة التي يحتاجها أفقيًا. العرض المتاح هو أيضًا العامل الرئيسي في تحديد ما إذا كان ينبغي استخدام تخطيط أحادي اللوحة الهواتف المحمولة أو تخطيط متعدد الأجزاء للأجهزة اللوحية. وبالتالي، من المرجح أن تهتم أصغر عرض ممكن على كل جهاز. يأخذ أصغر عرض للجهاز في الاعتبار زخارف الشاشة واجهة مستخدم النظام. على سبيل المثال، إذا كان الجهاز يحتوي على عناصر واجهة مستخدم دائمة على تراعي المساحة على طول المحور الأصغر عرض، أن العرض الأصغر هو أصغر من حجم الشاشة الفعلي، لأن هذه هي وحدات بكسل الشاشة غير المتاحة لواجهة المستخدم. إليك بعض القيم التي يمكنك استخدامها لأحجام الشاشات الشائعة:
عندما يوفّر تطبيقك أدلة موارد متعددة بقيم مختلفة
مؤهِّل تمّت الإضافة في المستوى 13 من واجهة برمجة التطبيقات يمكنك أيضًا الاطّلاع على لمزيد من المعلومات حول التصميم للشاشات المختلفة باستخدام هذا المؤهل، اطلع على تصميم سريع الاستجابة/التكيفي مع عدد مرات المشاهدة: |
عرض وارتفاع متاحان | w<N>dp h<N>dp أمثلة: w720dp w1024dp h720dp h1024dp وهكذا. |
تحدِّد هذه السياسة الحد الأدنى المتاح لعرض الشاشة أو ارتفاعها (في غالبًا ما يكون العرض والارتفاع المتاحان مفيدين لتحديد ما إذا كان يجب استخدام فاصل متعدد الأجزاء لأنه حتى على الجهاز اللوحي، فإنك لا تريد غالبًا نفس التخطيط متعدد الأجزاء الاتجاه الرأسي كما تفعل في الوضع الأفقي. وبالتالي، يمكنك استخدام هذه لتحديد الحد الأدنى للعرض و/أو الارتفاع المطلوب للتخطيط، بدلاً من استخدام كل من حجم الشاشة مؤهِّلات الاتجاه والاتجاهات معًا. عندما يوفّر تطبيقك عدة أدلة موارد بقيم مختلفة بالنسبة إلى هذه التهيئات، يستخدم النظام الإعداد الأقرب إلى (بدون تجاوز) العرض الحالي لشاشة الجهاز. يتم تحديد أقرب إلى من خلال إضافة الاختلافات بين العرض الفعلي للشاشة والعرض المحدد والفرق بين الارتفاع الفعلي للشاشة والارتفاع المحدد، مع ارتفاعات وعروض غير محدّدة قيمتها 0. تستبعد القيم المساحة التي تشغلها
المساحات الداخلية للنافذة، وبالتالي إذا كان الجهاز يحتوي على
عناصر واجهة المستخدم الدائمة على حواف الشاشة، تكون قيم العرض والارتفاع
أصغر من أبعاد الشاشة الفعلية، حتى عند عرض التطبيق من الحافة إلى الأخرى
استخدام
بعض زخارف الشاشة العمودية غير الثابتة (مثل الهاتف شريط الحالة الذي يمكن إخفاءه في وضع ملء الشاشة) لا يتم احتسابه هنا، أو هي زخارف النوافذ مثل شريط العنوان أو شريط الإجراءات، لذا يجب أن تكون التطبيقات مستعدة للتعامل مع بمساحة أصغر إلى حد ما مما هي محددة. ملاحظة: يختار النظام المورد الذي يتطابق مع كليهما في العرض والارتفاع. لذلك، يفضل بشدة استخدام المورد الذي يحدد كليهما على واحدة فقط تحدد أحدهما أو الآخر. على سبيل المثال، إذا كان عرض الشاشة الفعلي 720 بكسل مستقل الكثافة في ارتفاع يبلغ 1280 بكسل مستقل الكثافة ومورد واحد مؤهل باستخدام w720dp وآخر مؤهل w700dp-h1200dp، يتم اختيار الأخير على الرغم من أن الأولى تطابق تمامًا يحددها. تمّت الإضافة في المستوى 13 من واجهة برمجة التطبيقات اطّلِع أيضًا على لمزيد من المعلومات حول التصميم للشاشات المختلفة باستخدام هذا المؤهل، اطلع على تصميم سريع الاستجابة/التكيفي مع عدد مرات المشاهدة: |
حجم الشاشة |
small normal large xlarge
|
ملاحظة: استخدام مؤهِّل الحجم لا تشير إلى أنّ الموارد متوفّرة فقط للشاشات بهذا الحجم. إذا لم توفير موارد بديلة تتضمّن مؤهِّلات تتطابق بشكل أفضل مع الجهاز الحالي يمكن أن يستخدم النظام أيٍ من الموارد الأفضل مطابقة. تنبيه: إذا كانت جميع الموارد تستخدم مقاسًا
المؤهِّل أكبر من الشاشة الحالية، فسيقوم النظام
لا يستخدمها التطبيق ويتعطّل تطبيقك في وقت التشغيل. يحدث ذلك، على سبيل المثال، إذا كانت جميع التنسيقات
تم وضع علامة على الموارد باستخدام مؤهِّل تمّت إضافتها في المستوى 4 من واجهة برمجة التطبيقات اطّلِع أيضًا على لمزيد من المعلومات، يُرجى الانتقال إلى الشاشة نظرة عامة على التوافق. |
جانب الشاشة |
long notlong
|
تمّت إضافتها في المستوى 4 من واجهة برمجة التطبيقات ويعتمد هذا فقط على نسبة العرض إلى الارتفاع للشاشة (شاشة اطّلِع أيضًا على حقل إعداد |
شاشة مستديرة |
round notround
|
تمّت الإضافة في المستوى 23 من واجهة برمجة التطبيقات الاطّلاع أيضًا على إعدادات |
مجموعة ألوان واسعة |
widecg nowidecg
|
تمّت الإضافة في المستوى 26 من واجهة برمجة التطبيقات الاطّلاع أيضًا على إعدادات |
نطاق عالي الديناميكية (HDR) |
highdr lowdr
|
تمّت الإضافة في المستوى 26 من واجهة برمجة التطبيقات الاطّلاع أيضًا على إعدادات |
اتجاه الشاشة |
port land
|
ويمكن أن يتغير ذلك على مدار فترة استخدام تطبيقك إذا اختار المستخدم تدوير الشاشة. للحصول على معلومات عن مدى تأثير ذلك في تطبيقك أثناء وقت التشغيل، يُرجى الاطّلاع على التعامل مع تغييرات الإعدادات: اطّلِع أيضًا على حقل إعداد |
وضع واجهة المستخدم |
car desk television appliance watch vrheadset
|
تمّت الإضافة في المستوى 8 من واجهة برمجة التطبيقات التلفزيون الذي تمت إضافته في واجهة برمجة التطبيقات 13؛ تمت إضافتها في واجهة برمجة التطبيقات 20 للحصول على معلومات عن طريقة استجابة التطبيق عند إدخال الجهاز في من قاعدة الإرساء، فاقرأ تحديد ومراقبة حالة الإرساء ونوعه ويمكن أن يتغيّر هذا الوضع على مدار فترة استخدام تطبيقك إذا وضع المستخدم الجهاز في
إرساء. يمكنك تفعيل بعض هذه الأوضاع أو إيقافها باستخدام
|
الوضع الليلي |
night notnight
|
تمّت إضافتها في المستوى 8 من واجهة برمجة التطبيقات يمكن أن يتغيّر هذا الوضع خلال فترة عمل تطبيقك في حال ترك "الوضع الليلي" مفعّلاً.
الوضع التلقائي (الافتراضي)، وفي هذه الحالة يتغير الوضع بناءً على الوقت من اليوم. يمكنك تفعيل
أو إيقاف هذا الوضع باستخدام |
كثافة وحدات بكسل الشاشة (نقطة لكل بوصة) |
ldpi mdpi hdpi xhdpi xxhdpi xxxhdpi nodpi tvdpi anydpi nnndpi
|
توجد نسبة تحجيم 3:4:6:8:12:16 بين الكثافات الست الأساسية (مع تجاهل كثافة tvdpi). إذًا، تكون الصورة النقطية 9x9 في ldpi 12x12 في mdpi و18x18 in hdpi و24x24 في xhdpi، وهكذا. ملاحظة: لا يعني استخدام مؤهِّل الكثافة أنّ تكون الموارد فقط للشاشات ذات الكثافة. في حال عدم تقديم معلومات بديلة الموارد ذات المؤهلات التي تتطابق بشكل أفضل مع تهيئة الجهاز الحالية، يستخدم النظام الموارد التي تمثّل أفضل مطابقة. لمزيد من المعلومات حول كيفية التعامل مع كثافات الشاشة المختلفة وطريقة استخدام Android إمكانية تغيير حجم الصور النقطية لتناسب الكثافة الحالية، يمكنك معرفة نظرة عامة على توافق الشاشة |
نوع الشاشة التي تعمل باللمس |
notouch finger
|
اطّلِع أيضًا على حقل إعداد |
توفُّر لوحة المفاتيح |
keysexposed keyshidden keyssoft
|
في حال تقديم يمكن أن يتغير هذا على مدار فترة استخدام تطبيقك إذا فتح المستخدم جهازًا. لوحة المفاتيح. للحصول على معلومات عن مدى تأثير ذلك في تطبيقك أثناء وقت التشغيل، يُرجى الاطّلاع على التعامل مع تغييرات الإعدادات: يمكنك أيضًا الاطّلاع على حقلَي الإعداد |
أسلوب إدخال النص الأساسي |
nokeys qwerty 12key
|
اطّلِع أيضًا على حقل إعداد |
مدى توفر مفتاح التنقل |
navexposed navhidden
|
يمكن أن يتغير هذا خلال عمر تطبيقك إذا كشف المستخدم عن التنقل المفاتيح. للحصول على معلومات عن مدى تأثير ذلك في تطبيقك أثناء وقت التشغيل، يُرجى الاطّلاع على التعامل مع تغييرات الإعدادات: الاطّلاع أيضًا على إعدادات |
طريقة أساسية للتنقّل بدون لمس |
nonav dpad trackball wheel
|
اطّلِع أيضًا على حقل إعداد |
إصدار النظام الأساسي (مستوى واجهة برمجة التطبيقات) | أمثلة:v3 v4 v7 وهكذا. |
مستوى واجهة برمجة التطبيقات المتوافق مع الجهاز على سبيل المثال، |
ملاحظة: لا تتوافق بعض إصدارات Android مع جميع المؤهلات. استخدام مؤهِّل جديد ضمنيًا
مؤهِّل إصدار النظام الأساسي بحيث يمكن للأجهزة القديمة تجاهله. على سبيل المثال، استخدام
يتضمّن مؤهِّل w600dp
تلقائيًا مؤهِّل v13
، لأنّه
كان مؤهِّل العرض متاح جديدًا في المستوى 13 من واجهة برمجة التطبيقات. لتجنب أي مشكلات، قم دائمًا بتضمين مجموعة من
الموارد التلقائية (مجموعة من الموارد بدون مؤهلات). لمزيد من المعلومات، يُرجى الاطّلاع على
قسم حول توفير أفضل توافق للأجهزة مع
الموارد
قواعد اسم المؤهِّل
في ما يلي بعض القواعد حول استخدام أسماء مؤهلات الضبط:
- يمكنك تحديد مؤهلات متعددة لمجموعة واحدة من الموارد، مفصولة بشرطة. بالنسبة
مثال، ينطبق
drawable-en-rUS-land
على الأجهزة باللغة الإنجليزية الأمريكية في الوضع الأفقي. توجهك. - يجب أن تكون المؤهِّلات بالترتيب المذكور في الجدول 2.
- خطأ:
drawable-hdpi-port/
- صحيح:
drawable-port-hdpi/
- خطأ:
- لا يمكن دمج أدلة الموارد البديلة. على سبيل المثال، لا يمكنك الحصول على
res/drawable/drawable-en/
- والقيم غير حساسة لحالة الأحرف. يحوِّل برنامج تجميع الموارد أسماء الأدلة إلى الأحرف اللاتينية الصغيرة قبل المعالجة لتجنب المشكلات بشأن الحساسية لحالة الأحرف وأنظمة الملفات. إنّ الكتابة بالأحرف اللاتينية الكبيرة في الأسماء تهدف فقط إلى الاستفادة من سهولة القراءة.
- يُسمح بقيمة واحدة فقط لكل نوع مؤهِّل. على سبيل المثال، إذا كنت تريد استخدام
الملفات نفسها القابلة للرسم لإسبانيا وفرنسا، لا يمكنك الحصول على دليل باسم
drawable-es-fr/
بدلاً من ذلك، تحتاج إلى دليلين للموارد، مثلdrawable-es/
وdrawable-fr/
، اللذان يحتويان على الملفات المناسبة ومع ذلك، لست مطالبًا بتكرار الملفات في كلا الموقعين. بدلاً من ذلك، إنشاء اسم مستعار لمورد، كما هو موضح في قسم إنشاء قسم الموارد البديلة.
بعد حفظ الموارد البديلة في الأدلة المسماة المؤهلات التالية، يطبّق Android تلقائيًا الموارد المتضمّنة في تطبيقك استنادًا إلى من إعدادات الجهاز الحالية. في كل مرة يتم فيها طلب مورد، يبحث Android عن بديل أدلة الموارد التي تحتوي على ملف المورد المطلوب، ثم يعثر على الأكثر تطابقًا.
في حال عدم وجود موارد بديلة تطابق تهيئة جهاز معينة، فسيستخدم Android الموارد التلقائية المقابلة يشير ذلك المصطلح إلى مجموعة من الموارد لنوع معيّن من الموارد لا يتضمن إعدادات. المؤهِّل.
إنشاء مراجع للأسماء المستعارة
عندما يكون لديك مورد تريد استخدامه لأكثر من جهاز واحد التكوين ولكنك لا ترغب في توفيره كمورد افتراضي، فلا تحتاج إلى وضع في أكثر من دليل موارد بديل. بدلاً من ذلك، يمكنك إنشاء بديل مورد يعمل كاسم مستعار لمورد محفوظ في دليل الموارد الافتراضي.
ملاحظة: لا توفر جميع الموارد آلية يمكنك من خلالها
إنشاء اسم مستعار لمورد آخر. وعلى وجه الخصوص، الرسوم المتحركة والقائمة والبيانات الأولية وغيرها من
لا توفّر الموارد في دليل xml/
هذه الميزة.
على سبيل المثال، تخيل أن لديك رمز التطبيق icon.png
، وتحتاج إلى إصدار فريد من
لمختلف اللغات. ومع ذلك، هناك لغتان هما الإنجليزية الكندية والفرنسية الكندية والإنجليزية الكندية،
تستخدم نفس الإصدار. ليس عليك نسخ الصورة نفسها.
في دليل الموارد لكل من الإنجليزية الكندية والفرنسية الكندية.
بدلاً من ذلك، يمكنك حفظ الصورة المستخدمة في كليهما باستخدام أي اسم بخلاف
icon.png
، مثل icon_ca.png
، ووضع
في دليل res/drawable/
التلقائي. أنشئ بعد ذلك ملف icon.xml
في res/drawable-en-rCA/
وres/drawable-fr-rCA/
يشير إلى icon_ca.png
.
المورد باستخدام العنصر <bitmap>
. وهذا يتيح لك تخزين نسخة واحدة فقط من
ملف PNG وملفَّي XML صغيرين يشيران إليه. يمكنك الاطّلاع على الأمثلة في الأقسام التالية.
لمزيد من التفاصيل.
قابلة للرسم
لإنشاء اسم مستعار لعنصر حالي قابل للرسم، استخدِم العنصر <drawable>
:
<?xml version="1.0" encoding="utf-8"?> <resources> <drawable name="icon">@drawable/icon_ca</drawable> </resources>
إذا حفظت هذا الملف باسم "icon.xml
" كبديل
دليل الموارد، مثل res/values-en-rCA/
، فسيتم تجميعه
إلى مورد يمكنك الرجوع إليه باسم R.drawable.icon
، ولكنه
وهو في الواقع اسم مستعار لمورد R.drawable.icon_ca
، وهو
تم الحفظ في res/drawable/
.
التنسيق
لإنشاء عنوان بديل لتنسيق حالي، استخدِم <include>
.
عنصر ملفوف في <merge>
:
<?xml version="1.0" encoding="utf-8"?> <merge> <include layout="@layout/main_ltr"/> </merge>
إذا حفظت هذا الملف باسم main.xml
، فسيتم تجميعه في مورد يمكنك الرجوع إليه
كـ R.layout.main
، ولكنه في الواقع اسم مستعار للنطاق R.layout.main_ltr
المصدر.
السلاسل والقيم البسيطة الأخرى
لإنشاء اسم مستعار لسلسلة حالية، استخدم معرّف المورد للمصدر المطلوب السلسلة كقيمة للسلسلة الجديدة:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello</string> <string name="hi">@string/hello</string> </resources>
أصبح مورد R.string.hi
الآن اسمًا مستعارًا لـ R.string.hello
.
تعمل القيم البسيطة الأخرى بالطريقة ذاتها، مثل الألوان:
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="red">#f00</color> <color name="highlight">@color/red</color> </resources>
الوصول إلى موارد التطبيقات
بعد توفير مرجع في طلبك، يمكنك تطبيقه من خلال
والإشارة إلى معرف المورد الخاص به. يتم تحديد جميع أرقام تعريف الموارد في الفئة R
الخاصة بمشروعك، والتي
تقوم أداة aapt
تلقائيًا بإنشائه.
عند تجميع تطبيقك، تُنشئ aapt
الفئة R
، التي تحتوي على
معرِّفات الموارد لكل الموارد في دليل res/
. لكل نوع من الموارد،
توجد فئة فرعية R
، مثل
R.drawable
لكل الموارد القابلة للرسم. ولكل مورد من هذا النوع، هناك
عدد صحيح ثابت، مثل R.drawable.icon
. هذا العدد الصحيح هو معرّف المورد الذي يمكنك استخدامه
لاسترداد المورد.
على الرغم من أنّ الفئة R
هي المكان الذي يتم فيه تحديد معرّفات الموارد، ليس عليك إجراء ما يلي:
ابحث هناك لاكتشاف معرف المورد. يتألف معرِّف المورد دائمًا مما يلي:
- نوع المورد: يتم تجميع كل مورد في "نوع"، مثل
string
drawable
، وlayout
. لمزيد من المعلومات حول الأنواع المختلفة، يُرجى الاطّلاع على نظرة عامة على أنواع الموارد. - اسم المورد، وهو إمّا اسم الملف
باستثناء الإضافة أو القيمة في سمة XML
android:name
، إذا كانت هو قيمة بسيطة مثل السلسلة.
هناك طريقتان يمكنك من خلالهما الوصول إلى مورد:
- في الرمز البرمجي: باستخدام عدد صحيح ثابت من فئة فرعية من
R
الفئة، مثل:R.string.hello
string
هو نوع المورد وhello
هو اسم المورد. هناك العديد من واجهات برمجة تطبيقات Android التي يمكنها الوصول إلى مواردك عند توفير رقم تعريف مورد بهذا التنسيق. لمزيد من المعلومات، يُرجى الاطّلاع على القسم الوصول إلى الموارد في الرمز. - في XML: استخدام بنية XML خاصة تتوافق مع
معرِّف المورد المحدّد في فئة
R
، مثل:@string/hello
string
هو نوع المورد وhello
هو اسم المورد. يمكنك استخدام هذه الصفحة في أي مورد XML، أي مكان يُتوقع أن تقدمه في أحد الموارد. لمزيد من المعلومات، راجع القسم الوصول إلى الموارد من تنسيق XML.
الوصول إلى الموارد في الرموز البرمجية
يمكنك استخدام مورد في الرمز البرمجي من خلال تمرير رقم تعريف المورد كمَعلمة طريقة. بالنسبة
على سبيل المثال، يمكنك ضبط ImageView
لاستخدام res/drawable/myimage.png
مورد باستخدام setImageResource()
:
Kotlin
val imageView = findViewById(R.id.myimageview) as ImageView imageView.setImageResource(R.drawable.myimage)
Java
ImageView imageView = (ImageView) findViewById(R.id.myimageview); imageView.setImageResource(R.drawable.myimage);
يمكنك أيضًا استرداد موارد فردية باستخدام طرق في Resources
، والتي يمكنك الحصول على مثال لها.
مع getResources()
.
بناء الجملة
فيما يلي بناء الجملة للإشارة إلى مورد في التعليمة البرمجية:
[<package_name>.]R.<resource_type>.<resource_name>
- يشير
<package_name>
إلى اسم الحزمة التي يتوفّر فيها المورد (وليس مطلوبة عند الإشارة إلى الموارد من حزمتك الخاصة). <resource_type>
هي الفئة الفرعيةR
لنوع المورد.<resource_name>
هو اسم ملف المورد بدون الامتداد أو قيمة السمةandroid:name
في عنصر XML، وقيم بسيطة.
بالنسبة مزيد من المعلومات حول كل نوع من أنواع الموارد وكيفية الإشارة إليها، راجِع نظرة عامة على أنواع الموارد.
حالات الاستخدام
هناك العديد من الطرق التي تقبل معلَمة رقم تعريف المورد، ويمكنك استرداد الموارد باستخدام
في Resources
. إِنْتَ
يمكننا الحصول على مثيل لـ Resources
باستخدام Context.getResources()
.
إليك بعض الأمثلة على الوصول إلى الموارد في التعليمات البرمجية:
Kotlin
// Load a background for the current screen from a drawable resource. window.setBackgroundDrawableResource(R.drawable.my_background_image) // Set the Activity title by getting a string from the Resources object, because // this method requires a CharSequence rather than a resource ID. window.setTitle(resources.getText(R.string.main_title)) // Load a custom layout for the current screen. setContentView(R.layout.main_screen) // Set a slide in animation by getting an Animation from the Resources object. flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.hyperspace_in)) // Set the text on a TextView object using a resource ID. val msgTextView = findViewById(R.id.msg) as TextView msgTextView.setText(R.string.hello_message)
Java
// Load a background for the current screen from a drawable resource. getWindow().setBackgroundDrawableResource(R.drawable.my_background_image) ; // Set the Activity title by getting a string from the Resources object, because // this method requires a CharSequence rather than a resource ID. getWindow().setTitle(getResources().getText(R.string.main_title)); // Load a custom layout for the current screen. setContentView(R.layout.main_screen); // Set a slide in animation by getting an Animation from the Resources object. flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.hyperspace_in)); // Set the text on a TextView object using a resource ID. TextView msgTextView = (TextView) findViewById(R.id.msg); msgTextView.setText(R.string.hello_message);
تنبيه: لا تعدِّل ملف R.java
يدويًا. يتم إنشاؤه باستخدام أداة aapt
عندما يكون مشروعك
مجمعة. يتم إلغاء أي تغييرات في المرة التالية التي تقوم فيها بالتجميع.
الوصول إلى الموارد من تنسيق XML
يمكنك تحديد قيم لبعض سمات وعناصر XML باستخدام الرجوع إلى مورد موجود. غالبًا ما تفعل هذا عند إنشاء ملفات التخطيط، توفر سلاسل وصورًا لأدواتك.
على سبيل المثال، إذا أضفت Button
إلى التنسيق، استخدِم
مورد سلسلة لنص الزر:
<Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/submit" />
بناء الجملة
فيما يلي بناء الجملة للإشارة إلى مورد في مورد XML:
@[<package_name>:]<resource_type>/<resource_name>
<package_name>
هو اسم الحزمة التي يوجد فيها المورد (وليس مطلوب عند الإشارة إلى الموارد من نفس الحزمة).<resource_type>
هو الفئة الفرعيةR
لنوع المورد.<resource_name>
إما اسم ملف المورد بدون الامتداد أو قيمة السمةandroid:name
في عنصر XML، وقيم بسيطة.
بالنسبة مزيد من المعلومات حول كل نوع من أنواع الموارد وكيفية الإشارة إليها، راجِع نظرة عامة على أنواع الموارد.
حالات الاستخدام
وفي بعض الحالات، عليك استخدام مورد لقيمة في XML، مثلاً لتطبيق صورة قابلة للرسم. بأداة، كما يمكنك أيضًا استخدام مورد في XML في أي مكان يقبل قيمة بسيطة. بالنسبة مثلاً، إذا كان لديك ملف الموارد التالي الذي يشتمل على مورد ألوان ومورد سلسلة:
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="opaque_red">#f00</color> <string name="hello">Hello!</string> </resources>
يمكنك استخدام هذه الموارد في ملف التخطيط التالي لتعيين لون النص السلسلة النصية:
<?xml version="1.0" encoding="utf-8"?> <EditText xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:textColor="@color/opaque_red" android:text="@string/hello" />
وفي هذه الحالة، لا تحتاج إلى تحديد اسم الحزمة في مرجع المورد، لأنّ الموارد من حزمتك الخاصة. إلى مرجع نظام، عليك تضمين اسم الحزمة، كما هو موضح في المثال التالي:
<?xml version="1.0" encoding="utf-8"?> <EditText xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:textColor="@android:color/secondary_text_dark" android:text="@string/hello" />
ملاحظة: عليك دائمًا استخدام موارد السلسلة، حتى يمكن ترجمة التطبيق إلى اللغات الأخرى. للحصول على معلومات حول إنشاء خيارات موارد (مثل السلاسل المترجمة)، راجِع توفير بدائل الموارد للحصول على دليل كامل لأقلمة تطبيقك للغات الأخرى، راجِع ترجمة تطبيقك.
ويمكنك أيضًا استخدام الموارد بتنسيق XML لإنشاء أسماء مستعارة. على سبيل المثال، يمكنك إنشاء مورد قابل للرسم يكون اسمًا مستعارًا لمورد آخر قابل للرسم:
<?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/other_drawable" />
يبدو هذا متكررًا، ولكن يمكن أن يكون مفيدًا جدًا عند استخدام مورد بديل. لمزيد من المعلومات، يُرجى الاطِّلاع على القسم حول إنشاء موارد أسماء مستعارة.
سمات نمط المرجع
يتيح لك مورد سمة النمط الإحالة إلى القيمة لإحدى السمات في المظهر المطبق حاليًا. تتيح لك الإشارة إلى سمة نمط تخصيص مظهر عناصر واجهة المستخدم من خلال تصميمها لتتوافق مع الاختلافات القياسية التي يوفرها الموضوع الحالي، بدلاً من توفير قيمة ذات ترميز ثابت. الإشارة إلى سمة نمط "استخدم النمط المحدد من خلال هذه السمة في المظهر الحالي".
للإشارة إلى سمة نمط، فإن بنية الاسم تتطابق تقريبًا مع المورد العادي
ولكن بدلاً من كتابة "at" (@
)، فاستخدم علامة استفهام (?
). تشير رسالة الأشكال البيانية
جزء نوع المورد اختياري. بالتالي، تكون بنية المرجع على النحو التالي:
?[<package_name>:][<resource_type>/]<resource_name>
على سبيل المثال، إليك كيفية الإشارة إلى سمة لضبط لون النص ليتطابق مع لون النص الثانوي لمظهر النظام:
<EditText id="text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="?android:textColorSecondary" android:text="@string/hello_world" />
تحدّد السمة android:textColor
هنا اسم سمة النمط
في الموضوع الحالي. يستخدم Android الآن القيمة المطبَّقة على android:textColorSecondary
.
نمط كقيمة لـ android:textColor
في هذا التطبيق المصغَّر. نظرًا لأن النظام
أداة الموارد المختلفة من المتوقع أن يكون هناك مورد سمة متوقع في هذا السياق،
لا تحتاج إلى أن تذكر النوع بشكل صريح، وهو
?android:attr/textColorSecondary
يمكنك استبعاد النوع attr
.
الوصول إلى الملفات الأصلية
قد تحتاج إلى الوصول إلى ملفاتك وأدلتك الأصلية على الرغم من كونها غير شائعة. إذا فعلت ذلك،
لن يعود بإمكانك حفظ ملفاتك في res/
، لأنّ الطريقة الوحيدة لقراءة مورد من
تتضمن res/
رقم تعريف المورد. بدلاً من ذلك، يمكنك حفظ مواردك في
دليل assets/
.
لا يتم تحديد مورد للملفات المحفوظة في الدليل assets/
.
بالتالي، لا يمكنك الإشارة إليها من خلال الفئة R
أو من مصادر XML. بدلاً من ذلك، يمكنك
البحث عن الملفات في دليل assets/
مثل نظام الملفات العادي وقراءة البيانات الأولية باستخدام
AssetManager
مع ذلك، إذا كان كل ما تريده هو قراءة البيانات الأولية (مثل ملف فيديو أو ملف صوتي)،
ثم احفظ الملف في دليل res/raw/
واقرأ سلسلة وحدات البايت باستخدام openRawResource()
.
الوصول إلى موارد النظام الأساسي
يحتوي Android على عدد من الموارد العادية، مثل الأنماط والمظاهر والتنسيقات. إلى
والوصول إلى هذه الموارد، فقم بتأهيل مرجع مواردك
اسم الحزمة "android
". على سبيل المثال، يوفّر Android مورد تنسيق يمكنك استخدامه من أجل
عناصر قائمة في ListAdapter
:
Kotlin
listAdapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, myarray)
Java
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myarray));
في هذا المثال، simple_list_item_1
هو مورد تنسيق يتم تحديده من خلال السمة
منصة للعناصر في ListView
. يمكنك استخدام هذا بدلاً من إنشاء
التخطيط الخاص بك لعناصر القائمة.
توفير أفضل توافق للأجهزة مع الموارد
ليتوافق تطبيقك مع تهيئات متعددة للأجهزة، من المهم جدًا أن يجب دائمًا توفير الموارد التلقائية لكل نوع من أنواع الموارد التي يستخدمها تطبيقك.
على سبيل المثال، إذا كان تطبيقك يتيح استخدام عدة لغات، احرِص دائمًا على تضمين دليل values/
(يتم حفظ سلاسلك فيه) بدون مؤهِّل اللغة والمنطقة. إذا وضعت بدلاً من ذلك جميع ملفات السلسلة
في الأدلة التي تحتوي على مؤهِّل لغة ومنطقة، فسيتعطّل التطبيق عند تشغيله
على جهاز تم ضبطه على لغة لا تتيحها سلاسلك.
طالما توفر الإعداد التلقائي
values/
مورد، يعني ذلك أنّ تطبيقك يعمل بشكل صحيح، حتى إذا لم يعمل المستخدم عليه.
فهم اللغة التي يقدمها. إنه أفضل من الأعطال.
وبالمثل، إذا قدمت موارد تخطيط مختلفة استنادًا إلى اتجاه الشاشة،
اختَر اتجاهًا واحدًا ليكون الاتجاه التلقائي. على سبيل المثال، بدلاً من توفير موارد التنسيق layout-land/
للوضع الأفقي وlayout-port/
للوضع العمودي، اترك واحدة كإعداد تلقائي، مثل
layout/
للصورة الأفقية وlayout-port/
للوضع العمودي.
يعد توفير موارد افتراضية أمرًا مهمًا، ليس فقط لأنه قد يتم تشغيل تطبيقك على لم تكن تتوقعه، ولكن أيضًا لأن الإصدارات الجديدة من Android تضيف أحيانًا مؤهِّلات الإعداد التي لا تتوافق مع الإصدارات القديمة. إذا كنت تستخدم مؤهِّل موارد جديدًا، مع الحفاظ على توافق الرمز مع الإصدارات القديمة من Android، ثم عندما يكون هناك يشغّل Android تطبيقك ويتعطّل إذا لم تقدّم الموارد التلقائية لأنّه لا يمكن استخدام الموارد المسماة مع المؤهل الجديد.
على سبيل المثال، إذا تم ضبط قيمة minSdkVersion
على 4، وكانت جميع الموارد القابلة للرسم مؤهّلة باستخدام الوضع الليلي (night
أو notnight
اللذَين تمت إضافتهما في واجهة برمجة التطبيقات).
المستوى 8)، فلا يمكن لجهاز من المستوى 4 من واجهة برمجة التطبيقات الوصول إلى الموارد والأعطال القابلة للرسم. في هذه الدورة،
إذا كنت تريد استخدام notnight
كموارد تلقائية، عليك استبعاد
المؤهِّل ووضع الموارد القابلة للرسم إما في drawable/
أو drawable-night/
.
باختصار، لضمان أفضل توافق مع الأجهزة، يجب دائمًا تقديم خيارات والموارد للموارد التي يحتاجها تطبيقك لأداء عملك بشكل صحيح. ثم قم بإنشاء بديل الموارد لعمليات تهيئة أجهزة معينة باستخدام مؤهلات التهيئة.
هناك استثناء واحد لهذه القاعدة: إذا كان قيمة minSdkVersion
في تطبيقك 4 أو
أكبر، لن تحتاج إلى موارد تلقائية قابلة للرسم عند توفير خيارات بديلة للرسم.
الموارد التي تتضمن مؤهِّل كثافة الشاشة. حتى بدون الخيار التلقائي
موارد قابلة للرسم، يستطيع Android العثور على أفضل تطابق من بين قيم كثافة الشاشة البديلة ومقياسها
الصور النقطية حسب الضرورة. ومع ذلك، وللحصول على أفضل تجربة على جميع أنواع الأجهزة،
توفير عناصر بديلة للرسم لجميع أنواع الكثافة الثلاثة.
كيف يعثر Android على المورد الأكثر تطابقًا
عند طلب مرجع تقدّم بدائل له، يحدّد Android مورد بديل يمكن استخدامه في وقت التشغيل، بناءً على إعدادات الجهاز الحالية. إلى توضيح الطريقة التي يختار بها Android موردًا بديلاً، وتفترض الدلائل التالية القابلة للرسم يحتوي كل منها على إصدارات مختلفة من نفس الصور:
drawable/ drawable-en/ drawable-fr-rCA/ drawable-en-port/ drawable-en-notouch-12key/ drawable-port-ldpi/ drawable-port-notouch-12key/
ولنفترض أن ما يلي هو إعداد الجهاز:
اللغة = en-GB
اتجاه الشاشة = port
كثافة وحدات بكسل الشاشة = hdpi
نوع الشاشة التي تعمل باللمس = notouch
أسلوب إدخال النص الأساسي = 12key
من خلال مقارنة إعدادات الجهاز بالموارد البديلة المتاحة، يختار Android
عناصر قابلة للرسم من drawable-en-port
.
يصل النظام إلى قراره بشأن الموارد التي سيتم استخدامها مع ما يلي: المنطق:
![](https://developer.android.google.cn/static/images/resources/res-selection-flowchart.png?authuser=9&hl=ar)
الشكل 2. مخطط انسيابي يوضح كيفية عثور Android على أفضل مطابقة.
- يمكنك إزالة ملفات الموارد التي تتعارض مع إعداد الجهاز.
تم حذف الدليل
drawable-fr-rCA/
لأنه تتعارض مع لغةen-GB
.drawable/ drawable-en/
drawable-fr-rCA/drawable-en-port/ drawable-en-notouch-12key/ drawable-port-ldpi/ drawable-port-notouch-12key/استثناء: تشير كثافة وحدات بكسل الشاشة إلى المؤهِّل الوحيد الذي لا إزالتها بسبب التناقض. وعلى الرغم من أن كثافة شاشة الجهاز هي hdpi، لا يتم إزالة
drawable-port-ldpi/
لأنّ كل كثافة للشاشة هي تُعد مطابقة في هذه المرحلة. للحصول على معلومات، يُرجى الاطّلاع على نظرة عامة على توافق الشاشة. - ابحث عن المؤهِّل ذي الأولوية الأعلى في القائمة (الجدول 2). (ابدأ بـ "مركز عملائي").
- هل يتضمن أي من أدلة الموارد هذا المؤهل؟
- إذا كانت الإجابة "لا"، عد إلى الخطوة 2 وانظر إلى المؤهل التالي. في هذا المثال، الإجابة هي "لا" إلى أن يتم الوصول إلى مؤهل اللغة.
- إذا كانت الإجابة بنعم، انتقِل إلى الخطوة الرابعة.
- يمكنك إزالة أدلة الموارد التي لا تتضمن هذا المؤهِّل. في هذا المثال، النظام
بعد ذلك، يؤدي ذلك إلى إزالة جميع الأدلة التي لا تتضمن مؤهل لغة:
drawable/drawable-en/ drawable-en-port/ drawable-en-notouch-12key/drawable-port-ldpi/drawable-port-notouch-12key/استثناء: إذا كان المؤهِّل المعنيّ هو كثافة وحدات بكسل الشاشة، يحدِّد Android الخيار الذي يتطابق إلى حدّ كبير مع كثافة شاشة الجهاز. بشكل عام، يفضّل Android تصغير حجم الصورة الأصلية الأكبر حجمًا لتقليص حجم الصورة الأصلية. الصورة الأصلية. لمزيد من المعلومات، يُرجى الانتقال إلى الشاشة نظرة عامة على التوافق.
- كرِّر الخطوات الثانية والثالثة والرابعة حتى يبقى دليل واحد فقط. في هذا المثال، الشاشة
هو المؤهِّل التالي الذي توجد له أي مطابقات.
ولذلك، يتم استبعاد الموارد التي لا تحدِّد اتجاه الشاشة:
drawable-en/drawable-en-port/drawable-en-notouch-12key/الدليل المتبقي هو
drawable-en-port
.
ورغم تنفيذ هذا الإجراء لكل مورد مطلوب، إلا أن النظام يحسِّن وبعض جوانبها. أحد هذه التحسينات هو أنه عند معرفة ضبط الجهاز، قد إزالة الموارد البديلة التي لا يمكن مطابقتها على الإطلاق. على سبيل المثال، إذا كانت التكوين هي اللغة الإنجليزية، إذًا أي دليل موارد يحتوي على مؤهل لغة لا يتم تضمين شيء ما بخلاف اللغة الإنجليزية في مجموعة الموارد التي تم التحقق منها (على الرغم من دليل الموارد بدون، يتم تضمين مؤهل اللغة).
عند تحديد الموارد بناءً على مؤهلات حجم الشاشة، يستخدم النظام الموارد مصممة لشاشة أصغر من الشاشة الحالية إذا لم تكن هناك موارد تتطابق بشكل أفضل. على سبيل المثال، تستخدم الشاشة الكبيرة الحجم موارد الشاشة ذات الحجم العادي إذا لزم الأمر.
ومع ذلك، إذا
الموارد المتاحة الوحيدة أكبر من الشاشة الحالية، يميّز النظام
لا تستخدمه هذه العلامات ويتعطّل تطبيقك إذا لم تتطابق أي موارد أخرى مع الجهاز.
التكوين. ويحدث ذلك مثلاً إذا تم وضع علامة على جميع موارد التنسيق باستخدام المؤهِّل xlarge
،
ولكن الجهاز هو شاشة ذات حجم عادي.
ملاحظة: تكون أولوية المؤهِّل (في الجدول 2) أكثر أهمية.
عن عدد المؤهلات التي تتطابق تمامًا مع الجهاز. في المثال السابق، في الخطوة الرابعة
يتضمن الخيار الأخير في القائمة ثلاثة مؤهلات تتطابق تمامًا مع الجهاز (الاتجاه
ونوع الشاشة التي تعمل باللمس وطريقة الإدخال)، في حين أن drawable-en
يحتوي على معلَمة واحدة فقط تتطابق مع
(اللغة). ومع ذلك، فإن اللغة لها أولوية أعلى من هذه المؤهلات الأخرى، لذا
تم استبعاد drawable-port-notouch-12key
.