مصادر التطبيق نظرة عامه

الإعلانات

مصادر التطبيق نظرة عامه

 

 

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

واجهة المستخدم، إرشادات الصور المتحركة، وغيرها الكثير.

 

يجب عليك دائماً إقصاء مصادر التطبيق عن كودك البرمجي مثل الصور والسلاسل، بحيث يمكنك الإحتفاظ بهم بشكلٍ مستقل.

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

 

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

المستخدم بناءً على حجم الشاشة أو سلاسل مختلفة إعتماداً على إعدادات اللغة.

 

حالما تقوم بإقصاء مصادر تطبيقك، يمكنك الوصول إليها بإستخدام معرفات المصادر التي تم إنشاؤها في فئة R الخاصة بالمشروع.

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

 

 

مصادر التطبيق

أنواع تجميع المصادر


يجب أن تضع كل نوع من المصادر في دليل فرعي خاص، بداخل مجلد مشروعك الموجود في المسار التالي: res/ directory.

على سبيل المثال، إليك التسلسل الهرمي لملفات مشروع بسيط:

MyProject/
    src/
        MyActivity.java
    res/
        drawable/
            graphic.png
        layout/
            main.xml
            info.xml
        mipmap/
            icon.png
        values/
            strings.xml

كما ترى في هذا المثال، يحتوي المجلد res/ على جميع المصادر (بداخل مجلدات فرعية): مصدر صورة، مصدري تخطيط، ومجلد

mipmap/ للأيقونات، وملف مصدر سلسلة. أسماء مجلدات المصادر مهمة وهي موضحة في الجدول رقم 1.

 ملاحظة: لمزيد من المعلومات حول إستخدام مجلدات mipmap، راجع نظرة عامة على إدارة المشاريع.

جدول 1. أدلة المصادر المدعومة بداخل مجلد المشروع res/.

المجلد نوع المصدر
مجلد الرسوميات المتحركه animator/ ملفات XML تحدد خصائص الرسوميات المتحركة.
 anim/ ملفات XML تحدد حركة الصور المتحركة tween animations (يمكن أن تحفظ خصائص الصور المتحركة أيضاً في هذا الدليل، ولكن يفضل حفظها في الدليل animator/ ليسهل التمييز بين النوعين).
مجلد الألوان color/ ملفات XML تحدد حالة قائمة الألوان. أنظر مصادر حالة قائمة الألوان.
مجلد الرسوميات drawable/

ملفات صور نقطية (.png, .9.png, .jpg, .gif) أو ملفات XML تم تجميعها في الأنواع الفرعية التالية من المصادر الرسوميه drawable:

  • ملفات صور نقطية Bitmap.
  • Nine-Patches (صور نقطية يمكن تغيير حجمها).
  • قوائم الحاله State lists.
  • الأشكال Shapes.
  • صور متحركة رسوميه Animation drawables.
  • رسوميات أخرى Other drawables.

أنظر مصادر الرسوميات.

 مجلد mipmap/ ملفات رسوميات لكثافات مختلفة لأيقونات المشغل. لمزيد من المعلومات حول إدارة أيقونات المشغل بإستخدام مجلد mipmap/. أنظر إلى نظرة عامة على إدارة المشاريع.
مجلد المخطط\التنسيق layout/ ملفات XML تحدد تخطيط واجهة المستخدم. أنظر مصادر المخطط.
مجلد القائمه menu/ ملفات XML تعرف قوائم التطبيق، مثل قائمة الخيارات، القائمة المنبثقه، أو القائمة الفرعيه. أنظر مصادر القائمة.
مجلد المواد الخام raw/

ملفات عشوائيه تحفظ في شكلها الخام، لفتح هذه المصادر بواسطة  InputStream قم بإستدعاء ()Resources.openRawResource بإستخدام معرف المصدر وهو R.raw.filename.

مع ذلك، إذا كنت بحاجة إلى الوصول إلى أسماء الملفات الأصلية والتسلسل الهرمي للملفات، فقد تفكر في حفظ بعض المصادر في مجلد assets/ (بدلاً من res/raw/). الملفات الموجودة في assets/ لا توفر معرف للمصادر لذا يمكنك قراءتهم فقط بإستخدام AssetManager.

مجلد القيم values/

ملفات XML تحتوي على قيم بسيطة مثل: السلاسل، الأعداد الصحيحه، الألوان.

 

في حين أن ملفات مصادر XML الموجودة في res/ في مجلدات فرعية أخرى، تحدد مصدر واحد بناءً على اسم ملف XML.

فإن الملفات الموجودة في مجلد values/ تصف مصادر متعددة.

بالنسبة لملف في هذا المجلد فإن كل تابع child في عنصر <resources> يقوم بتعريف مصدر واحد.

مثال: ينشئ عنصر <string> مصدر R.string و ينشئ عنصر <color> مصدر R.color.

لأن كل مصدر يتم تعريفه بواسطة عنصر XML الخاص به، يمكنك تسمية الملف بأي أسم تريده وتضع أنواع مصادر مختلفة في ملف واحد.

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

راجع مصادر السلاسل، مصادر الأنماط، و مزيد من أنواع المصادر.

مجلد xml/

ملفات XML عشوائية يمكن قراءتها أثناء وقت التشغيل من خلال إستدعاء ()Resources.getXML.يجب حفظ ملفات تكوين XML المختلفة هنا، مثل تكوين إمكانية البحث.

مجلد الخطوط font/ ملفات خطوط تنتهي باللاحقات التاليه: .ttf, .otf, or .ttc أو ملفات XML تحتوي على عنصر <font-family>.

لمزيد من المعلومات حول الخطوط كمصادر. راجع الخطوط في XML.

 تحذير: لا تقم أبداً بحفظ ملفات المصادر بشكلٍ مباشر بداخل مجلد res/ لأن ذلك قد يسبب أخطاء في المحول البرمجي compiler.

لمزيد من المعلومات حول أنواع معينة من المصادر، راجع وثائق أنواع المصادر.

 

المصادر التي تقوم بحفظها في المجلدات الفرعية التي تم تعريفها في الجدول 1، هي مصادرك “الإفتراضيه”.

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

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

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

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

لتوفير هذه المصادر المختلفة لتكوينات الجهاز المختلفة، تحتاج إلى توفير مصادر بديلة، بالإضافة إلى مصادرك الإفتراضية.

 

 

مصادر التطبيق

 

توفير المصادر البديله


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

بديله من أجل الكثافات المختلفة للشاشة و موارد سلاسل بديله للغات المختلفة. أثناء التشغيل يكتشف نظام الأندرويد التهيئة الحالية للجهاز ويقوم بتحميل الموارد المناسبة لتطبيقك.

 

شكل 1: نوعين مختلفين من الأجهزة، كل منهما يستخدم مصادر تخطيط مختلفه.

 

لتخصيص بدائل تكوينات معينه لمجموعة من المصادر:

 

1- قم بإنشاء مجلد جديد في res/ وتسميته في الشكل <resources_name>-<config_qualifier>.

  • <resources_name> هو اسم المجلد الخاص بالمصادر الإفتراضية المتماثله (تم تعريفها في الجدول 1).
  • <qualifier> هو اسم يحدد تكوين فردي لمعرفة أي من هذه المصادر يجب أن تستخدم (تم تعريفه في الجدول 2).

يمكنك إضافة أكثر من <qualifier> واحد. أفصل بينهم بـ -.

 تحذير: عند إضافة العديد من المؤهلات qualifiers، يجب أن تضعهم بنفس الترتيب المذكور في الجدول 2. إذا قمت بترتيب المؤهلات بشكل خاطئ، سوف يتم تجاهل المصدر.

2- أحفظ المصادر البديلة المعنيه في هذا المجلد الجديد. يجب تسمية ملفات المصادر تماماً بنفس اسم ملفات المصادر الإفتراضية.

مثال، إليك بعض المصادر الإفتراضية والبديله:

res/
    drawable/
        icon.png
        background.png
    drawable-hdpi/
        icon.png
        background.png

 

يشير المؤهل hdpi إلى أن المصادر الموجودة في هذا المجلد مخصصة للأجهزة المزودة بشاشة عالية الكثافه.

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

بهذه الطريقة، يكون معرف المصدر الذي تستخدمه للإشارة إلى صورة icon.png ، أو صورة background.png هو نفسه دائماً.

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

 

مصادر التطبيق

 

يدعم الأندرويد العديد من مؤهلات التهيئة (التكوين) ويمكنك إضافة عدة مؤهلات إلى اسم مجلد واحد، وذلك بفصل كل مؤهل بشرطة “-“.

 

يسرد الجدول 2 مؤهلات التكوين الصالحه، حسب الترتيب “الأسبقيه” – إذا كنت تستخدم مؤهلات متعددة لمجلد المصادر، ينبغي عليك إضافتها إلى اسم المجلد بالترتيب المسرد في الجدول.

 

جدول2. أسماء مؤهلات التكوين

التكوين قيمة المؤهلات الوصف
MCC و MNC أمثله:
mcc310
mcc310-mnc004
mcc208-mnc00
…ألخ
رمز بلد المحمول (MCC) mobile country code تكون متبوعة إختيارياً بـ (MNC) رمز شبكة المحمول mobile network code
من بطاقة SIM card الموجودة بداخل الجهاز.

مثال:

mcc310 هي U.S. على أي شركة إتصالات، و mcc310-mnc004 هي U.S. على شركة فيرايزون. و mcc208-mnc00 هي فرنسا على شركة أورانج.

إذا كان الجهاز يستخد إتصال لا سلكي (GSM) النظام العالمي للإتصالات المتنقله الجيل الثاني Global System for Mobile communications فإن قيم رمز البلد و رمز الشبكة للمحمول تأتيان من بطاقة SIM.

يمكنك أيضاً إستخدام رمز بلد المحمول وحده (مثال، تضمين المصادر القانونية لبلد مخصص في تطبيقك).

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

إذا قررت إستخدام مؤهلي MCC و MNC، فيجب عليك القيام بذلك بحذر وأختبار أنه يعمل كما هو متوقع.

راجع أيضاً حقول التكوين mcc, mnc اللتين تشيران إلى رمز بلد المحمول و رمز شبكة المحمول الحاليين، على التوالي.

اللغة والمنطقه أمثله:
en
fr
en-rUS
fr-rFR
fr-rCA
b+en
b+en+US
b+es+419

يتم تعريف اللغة بواسطة رمز اللغة المكون من حرفين ISO 639-1، متبوع إختيارياً برمز المنطقة المكون من حرفين ISO 3166-1-alpha-2 (مسبوقاً بالحرف الصغير r).

الحروف ليست حساسة لحالة الأحرف، يتم إستخدام البادئة “r” لتمييز جزئية المنطقة. لا يمكنك تحديد المنطقة بمفردها.

أندرويد 7 (API level 24) قدم دعماً لوسوم اللغة BCP 47. والتي يمكنك إستخدامها لتأهيل المصادر الخاصة باللغة والمنطقة.

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

لإستخدام وسم اللغة BCP 47 يكتب تسلسل كالتالي: b+ و رمز اللغة الثنائي ISO 639-1 متبوعاً اختيارياً بوسوم فرعية إضافية مفصولة بـ +.

يمكن أن يتغير وسم اللغة خلال نشاط التطبيق عندما يقوم المستخدم بتغيير إعدادات لغة النظام.

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

أنظر إضفاء الطابع المحلي، الدليل الكامل لإضفاء طابع محلي على تطبيقك للغات الأخرى.

راجع أيضاً دالة ()getLocales الذي يوفر قائمة محددة من المواقع. تتضمن هذه القائمة اللغة الأساسية.

إتجاه المخطط\التنسيق ldrtl من اليمين إلى اليسار
ldltr من اليسار إلى اليمين

إتجاه مخطط تطبيقك. Ldrtl هي إختصار لـlayout-direction-right-to-left” أي إتجاه المخطط من اليمين إلى اليسار.

و ldltr إختصار لـ”layout-direction-left-to-right” إتجاه المخطط من اليسار إلى اليمين وهي القيمة الإفتراضية.

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

على سبيل المثال، إذا كنت تريد توفير مخطط مخصص للغة العربية ومخطط عام للغات الأخرى المكتوبة من اليمين إلى اليسار (مثل الفارسية أو العبرية) إذاً يجب أن تحصل على ما يلي:

 

ملاحظة: لتمكين ميزات المخطط من اليمين إلى اليسار في تطبيقك، يجب عليك تعيين قيمة supportsRtl إلى صحيح، وتعيين قيمة targetSdkVersion إلى 17 أو أعلى.

تمت إضافتها في API 17

أصغر عرض smallestWidth

الإختصار sw

sw<N>dp

أصغر عرض بوحدة dp

أمثله:

sw320dp
sw600dp
sw720dp

…ألخ

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

تحديداً، يعتبر أصغر عرض للجهاز هو أقصر ارتفاع وعرض متاحين على الشاشة (يمكنك اعتباره كأصغر عرض ممكن للشاشة).

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

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

عندها يمكنك إستخدام هذا المؤهل لإنشاء مصادر التخطيط، res/layout-sw600dp/.

يستخدم النظام هذه المصادر فقط عندما يكون أصغر بعد متاح للشاشة هو 600 dp على الأقل، بغض النظر عما إذا كان جانب إدراك المستخدم user-perceived لـ 600 dp هو بالعرض أو الإرتفاع.

أصغر عرض هو حجم شاشة ثابت مميز للجهاز؛ أصغر عرض للجهاز لا يتغير عندما يتغير إتجاه الشاشة.

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

العرض المتاح هو أيضاً العامل الرئيسي في تحديد ما إذا كان سيستخدم مخطط من جزء واحد للجوالات أم مخطط متعدد الأجزاء لأجهزة التابلت.

وبالتالي، من المرجح أن تولي إهتماماً أكثر بما سيكون عليه أصغر عرض ممكن على كل جهاز.

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

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

هنا بعض القيم التي قد تستخدمها مع الأحجام الشائعة للشاشات:

  • 320 لأجهزة ذات تكوين شاشة مثل:
  • ldpi 240×320 (QVGA هواتف بدقة شاشة)
  • mdpi 320×480 (هواتف)
  • hdp 480×800 (هواتف عالية الدقة)

– 480 ، للشاشات مثل 480×800 mdpi (تابلت \ هاتف).

  • 600 ، للشاشات مثل 600×1024 mdpi (7 “تابلت).
  • 720 ، للشاشات مثل 720×1280 mdpi (10 “تابلت).

عندما يوفر تطبيقك أدلة مصادر متعددة مع قيم مختلفة لمؤهل أصغر عرض، فإن النظام يستخدم الأقرب (دون تخطي) أصغر عرض للجهاز.

تمت إضافته في مستوى API 13

يمكنك أيضاً مراجعة السمه android:requiresSmallestWidthDp التي تعلن الحد الأدنى لأصغر عرض يتوافق معه تطبيقك، وحقل التكوين smallestScreenWidthDp الذي يحتوي على أصغر قيمة عرض للجهاز.

لمزيد من المعلومات حول التصميم لشاشات مختلفة و إستخدام هذا المؤهل، راجع دليل مطوري دعم الشاشات المتعددة.

العرض المتاح Available width

يختصر بالحرف w

w<N>dp

أمثله:

w720dp
w1024dp
..ألخ

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

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

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

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

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

تمت إضافته في مستوى API 13.راجع أيضاً حقل تهيئة عرض الشاشة بالدي بي، الذي يحتوي على العرض الحالي للشاشة.

لمزيد من المعلومات حول التصميم للشاشات المختلفة وإستخدام هذا المؤهل، راجع دليل مطوري دعم الشاشات المتعددة.

حجم الشاشة
Screen size
صغير
عادي
كبير
أكبر
small
normal
large
xlarge

الصغيره: شاشات ذات حجم مشابه لشاشة QVGA ذات الكثافة

المنخفضه: الحد الأدنى لحجم المخطط للشاشة الصغيرة حوالي 320×426 dp وحده.

من الأمثلة على ذلك شاشة QVGA ذات الكثافة المنخفضه و شاشة VGA ذات الكثافة العاليه.

العاديه: شاشات ذات مشابه لشاشة HVGA ذات الكثافة المتوسطة. الحد الأدنى لحجم المخطط للشاشة العادية حوالي 320×470 dp وحدة.

من الأمثلة على ذلك شاشة WQVGA منخفضة الكثافه، شاشة HVGA متوسطة الكثافة، شاشة WVGA عالية الكثافة.

الكبيره: شاشات ذات حجم مشابه لشاشة VGA ذات الكثافة المتوسطة.

الحد الأدنى لحجم المخطط للشاشة الكبيرة حوالي 480×640 dp وحدة. من الأمثلة على ذلك شاشتي VGA و WVGA متوسطتي الكثافة.

الأكبر: شاشات أكبر بكثير من شاشة HVGA التقليدية ذات الكثافة المتوسطة.

الحد الأدنى لحجم المخطط للشاشة الأكبر حوالي 720×960 dp وحدة.

في معظم الحالات، تكون الأجهزة ذات الشاشة الأكبر، كبيرة جداً بحيث لا يمكن حملها في الجيب، ومن المرجح أن تكون أجهزة لوحيه. تمت إضافته في المستوى API 9.

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

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

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

تمت إضافته في المستوى API 4.
لمزيد من المعلومات راجع دعم الشاشات المتعددة.

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

هيئة الشاشه
Screen aspect
هيئة الشاشه
Screen aspect

طويله: الشاشات الطويله مثل: WQVGA, WVGA, FWVGA.

غير طويله: الشاشات الغير طويله مثل: QVGA, HVGA, and VGA.
تمت إضافته في المستوى API 4.

هذا يعتمد فقط على نسبة العرض إلى الإرتفاع للشاشة (الشاشة الطويلة أوسع). هذا لا يرتبط بإتجاه الشاشه.

راجع أيضاً حقل تهيئة مخطط الشاشة، الذي يبين ما إذا كانت الشاشة طويلة.

إستدارة الشاشه
Round screen
مستديره
غير مستديره

مستديره: الشاشات المستديرة مثل الأجهزة الدائرية القابلة للإرتداء (الساعات).

غير مستديرة: الشاشات المستطيلة مثل، الهواتف و الأجهزة اللوحيه (تابلت).

تمت إضافته في المستوى API 23.راجع أيضاً دالة التكوين ()isScreenRound، الذي يبين ما إذا كانت الشاشة مستديرة.

الألوان ذات النطاق العريض
Wide Color Gamut
widecg
nowidecg

{code widecg@}: يعرض نطاق ألوان واسع مثل Display P3 أو AdobeRGB.

{code nowidecg@}: يعرض مجموعة ألوان محددة مثل، sRGB.
تمت إضافته في المستوى API 26.

راجع أيضاً دالة تكوين ()isScreenWideColorGamut، الذي يبين ما إذا كانت الشاشة تحتوي على نطاق ألوان عريض.

النطاق الديناميكي العالي
High Dynamic Range (HDR)
Highdr أعلى
lowdr أخفض

{code highdr@}: يتم عرضه بنطاق ديناميكي مرتفع.

{code lowdr@}: يتم عرضه بنطاق ديناميكي منخفض\ قياسي.

تمت إضافته في المستوى API 26.راجع أيضاً أسلوب التكوين ()isScreenHdr، الذي يبين ما إذا كانت الشاشة تحتوي على إمكانيات HDR.

إتجاه الشاشة
Screen orientation
Port رأسي
land أفقي

رأسي: يكون الجهاز في إتجاة عمودي (رأسي).

أفقي: يكون الجهاز في إتجاة أفقي.

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

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

نسق واجهة المستخدم
UI mode
سيارة
مكتب
تلفاز
جهاز كهربائي
ساعة
نظارة الواقع الإفتراضي

السيارة: يتم عرض الجهاز على حامل السيارة.

المكتب: يتم عرض الجهاز على حامل المكتب.

التلفاز: يتم عرض الجهاز على التلفاز مما يوفر تجربة “العشرة أقدام” حيث تكون واجهة المستخدم على شاشة كبيرة ويكون المستخدم بعيداً عنها ويتم التحكم بها بأجهزة التحكم عن بعد أو أي تفاعل آخر لا يستخدم المؤشر.

الجهاز الكهربائي: يعمل الجهاز كأداة بدون شاشه.

الساعه: يحتوي الجهاز على شاشة ويتم إرتداؤه على المعصم.

نظارة الواقع الإفتراضي: يتم عرض الجهاز على نظارة الواقع الإفتراضي.

تمت إضافتها في المستوى API 8، التلفاز أضيف في المستوى API 13، الساعه أضيفت في المستوى API 20.للحصول على معلومات حول كيفية إستجابة تطبيقك عندما يتم وضع أو إزالة الجهاز عن الحامل، اقرأ تحديد ومراقبة حالة ونوع الحامل.

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

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

الوضع الليلي
Night mode
ليل night
ليس ليل notnight

ليل: وقت الليل.

ليس ليل: وقت النهار.تمت إضافته في المستوى API 8.

يمكن أن يتغير هذا أثناء نشاط تطبيقك إذا كان الوضع الليلي في وضع التمكين التلقائي (إفتراضي)، وفي هذه الحالة يتغير الوضع بناءً على الوقت.

يمكنك تمكين أو تعطيل هذه الميزة بواسطة UiModeManager.

راجع معالجة تغييرات وقت التشغيل للحصول على معلومات حول كيفية تأثير ذلك على تطبيقك أثناء وقت التشغيل.

كثافة بكسلات الشاشة (نقطة لكل بوصة)
Screen pixel density (dpi)
ldpi
mdpi
hdpi
xhdpi
xxhdpi
xxxhdpi
nodpi
tvdpi
anydpi
nnndpi

Ldpi: شاشات منخفضة الكثافة حوالي 120dpi.

Mdpi: شاشات متوسطة الكثافة (على الشاشة القياسيه HVGA) حوالي 160dpi.

Hdpi: شاشات عالية الكثافة حوالي 240dpi.

Xhdpi: شاشات ذات كثافة عالية إضافيه حوالي 320dpi. أضيفت في المستوى API 8.

Xxhdpi: شاشات عالية الكثافه ثنائية الإضافه حوالي 480dpi.

أضيفت في المستوى API 16.

Xxxhdpi: شاشات عالية الكثافه ثلاثية الإضافه (رمز المشغل فقط، راجع مذكرة دعم الشاشات المتعددة)، حوالي 640dpi.

تمت إضافته في المستوى 18.

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

Tvdpi: شاشات بين mdpi و hdpi، حوالي 213dpi. هذه لا تعتبر مجموعة كثافة “أساسية”.

فهي مخصصة في الغالب لأجهزة التلفاز ومعظم التطبيقات لا ينبغي أن تحتاج إليها – يعد توفير مصادر mdpi و hdpi أمراً كافياً لمعظم التطبيقات، ويقوم النظام بتحجيمها حسب الحاجة.

أضيفت في المستوى API 13.

Anydpi: يتوافق هذا المؤهل مع جميع كثافات الشاشة و يتصدر المؤهلات الأخرى.

هذه مفيدة لرسوميات vector. أضيفت في المستوى API 21.

Nnndpi: تستخدم لتمثيل كثافة غير قياسية، حيث أن “nnn” كثافة شاشة ذات أعداد صحيحة موجبة.

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

توجد نسب قياس 3:4:6:8:12:16 بين الكثافات الست الأساسية (مع تجاهل كثافة tvdpi).

لذلك، تساوي الصورة النقطية 9*9 بـ ldpi، و 12*12 بـmdpi. و 18*18 بـhdpi. و 24*24 بـ xhdpi وهكذا.

إذا قررت أن مصادر صورتك لا تبدو جيدة كفاية على التلفاز أو أي أجهزة أخرى محددة و رغبت بتجربة المصدر tvdpi، فإن عامل القياس هو 1.33*mdpi.

مثال، صورة لـ mdpi بقياسات 100 بكسل * 100 بكسل ينبغي أن تكون بقياسات 133 بكسل * 133 بكسل لـ tvdpi.

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

راجع دعم الشاشات المتعددة للحصول على معلومات حول كيفية التعامل مع الكثافات المختلفة للشاشة و كيف يمكن لنظام أندرويد أن يقوم بتحجيم صورك لتتناسب مع الكثافة الحالية.

نوع شاشات اللمس
Touchscreen type
Notouch لا تعمل باللمس
finger بالأصابع

لا تعمل باللمس: الجهاز لا يحتوي على شاشة لمس.

بالأصابع: الجهاز يحتوي على شاشة لمس تستخدم من خلال تمرير المستخدم أصابعه على الشاشة.

أنظر أيضاً حقل تكوين شاشة اللمس، التي تبين نوع الشاشة التي تعمل باللمس على الجهاز.

توفر لوحة المفاتيح
Keyboard availability
keysexposed
keyshidden
keyssoft

Keysexposed: يحتوي الجهاز على لوحة مفاتيح متاحة.

إذا كان الجهاز مزوداً ببرنامج لوحة مفاتيح تم تمكينه (وهذا محتمل)، فقد يتم إستخدامها حتى لو لم تكن لوحة المفاتيح ظاهرة للمستخدم وحتى لو لم تكن ضمن التصميم الخارجي للجهاز.

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

Keyshidden: يحتوي الجهاز على لوحة مفاتيح ولكنها مخفية والجهاز لا يحتوي على برنامج لوحة مفاتيح مُمكن.

Keyssoft: يحتوي الجهاز على برنامج لوحة مفاتيح مُمكنة، سواء كانت مرئية أم لا.

إذا قمت بتوفير مصادر keysexposed، وليس مصادر keyssoft، فإن النظام سوف يستخدم مصادر keysexposed بغض النظر عما إذا كانت لوحة المفاتيح مرئية، طالما أن النظام يحتوي على برنامج لوحة مفاتيح مُمكن.

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

أنظر التعامل مع تغييرات وقت التشغيل للحصول على معلومات حول كيفية تأثير هذا على جهازك أثناء تشغيله.

أنظر أيضاً حقول التكوين hardKeyboardHidden و keyboardHidden، التي تبين مستوى رؤية لوحة المفاتيح المدمجة و رؤية أي نوع من لوحات المفاتيح (بما فيها البرمجيه)، على التوالي.

أسلوب إدخال النص الأساسي
Primary text input method
Nokeys بلا مفاتيح
qwerty
12key

بلا مفاتيح: لا يحتوي الجهاز على مفاتيح لإدخال النص.

كويرتي: يحتوي الجهاز على لوحة مفاتيح كويرتي مدمجة، سواء كانت مرئية للمستخدم أم لا.

الإثناعشر مفتاح (لوحة الأرقام): يحتوي الجهاز على لوحة من 12 مفتاح مدمجة، سواء كانت مرئية للمستخدم أم لا.

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

توفر مفتاح ملاحة
Navigation key availability
Navexposed ظاهر
navhidden مخفي

الظاهر: مفاتيح الملاحة متاحة للمستخدم.

المخفي: مفاتيح الماحة مخفية ( مثلاً خلف غطاء مغلق).

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

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

راجع أيضاً حقل تكوين الملاحة المخفية، والتي تبين ما إذا كانت مفاتيح الملاحة مخفية أم لا.

أسلوب ملاحة أساسي لا يعمل باللمس
Primary non-touch navigation method
nonav
dpad دي باد
trackball كورة تتبع
wheel عجلة

Nonav: لا يوجد في الجهاز وسيلة ملاحة غير إستخدام شاشة اللمس.

dpad: يحتوي الجهاز على لوحة إتجاه (d-pad) للملاحة.

Trackball: يحتوي الجهاز على كورة تتبع الملاحة (التنقل).

Wheel: يحتوي الجهاز على عجلة توجيه للملاحة (غير شائعة).راجع أيضاً حقل تكوين الملاحة، والذي يبين نوع أسلوب الملاحة المتوفر.

الإصدار الأساسي للنظام
Platform Version (API level)
أمثله:
v3
v4
v7

مستوى واجهة برمجة التطبيقات المدعومة من قبل الجهاز. على سبيل المثال، v1 للمستوى API1 (جهاز يعمل بنظام أندرويد 1.0 أو أعلى).

راجع مستند مستوى واجهة برمجة تطبيقات الأندرويد لمزيد من المعلومات عن هذه القيم.

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

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

 

 

 

مصادر التطبيق

مبادئ تسمية المؤهل

 

فيما يلي بعض القواعد المتبعة في إستخدام تكوينات تسمية المؤهلات:

 

1- يمكنك تحديد عدة مؤهلات لمجموعة واحدة من المصادر، مفصولة بشرطات، مثال، drawable-en-rUS-land تتناسب مع الأجهزة الإنجليزية-الأمريكية في الوضع الأفقي.

2- يجب أن تكون المؤهلات بنفس الترتيب الوارد في الجدول 2. مثال:

        خاطيء: drawable-hdpi-port/
          صحيح: drawable-port-hdpi/

3- أدلة المصادر البديلة لا يمكن أن تكون متداخلة. مثال: لا يمكن أن تكون بهذا الشكل res/drawable/drawable-en/.

4- القيم غير حساسة لحالة الأحرف. مصدر المحول البرمجي compiler، يقوم بتحويل أسماء المجلدات إلى الأحرف الصغيرة قبل المعالجة.

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

5- يتم دعم قيمة واحدة فقط لكل نوع من أنواع المؤهلات. على سبيل المثال، إذا كنت تريد إستخدام نفس الملفات للغة الإسبانية والفرنسية، لا يمكن أن يكون لديك مجلد بأسم drawable-rES-rFR/.

بدلاً من ذلك، تحتاج إلى مجلدين للمصادر، هكذا drawable-rES/ و drawable-rFR/، التي تحتوي على الملفات المناسبة. ومع ذلك، لا يطلب منك تكرار الملفين نفسهما في كلا الموقعين. بدلاً من ذلك، يمكنك إنشاء اسم ستعار لمصدر. راجع إنشاء اسماء مستعارة للمصادر أدناه.

 

بعد قيامك بحفظ مصادر بديله في مجلدات مسماة بهذه المؤهلات، يقوم نظام الأندرويد تلقائياً بتطبيق المصادر الموجودة في تطبيقك بناء على التكوينات الحالية للجهاز.

 

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

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

 

 

 

مصادر التطبيق

 

إنشاء أسماء مستعاره للمصادر


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

بدلاً من ذلك، يمكنك (في بعض الحالات) إنشاء مصدر بديل يعمل كأسم مستعار لمصدر تم حفظه في مجلد الموارد الإفتراضي الخاص بك.

ملاحظة: لا توفر جميع المصادر آليات يمكنك من خلالها إنشاء اسم مستعار لمصدر آخر. خاصة، الصور المتحركة، القوائم، المواد الخام، والمصادر الأخرى الغير محددة في مجلد xml/ فهي لا توفر هذه الميزة.

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

 

ومع ذلك، الحاجة للغتين محليتين، الإنجليزية-الكنديه و الفرنسية-الكنديه، إلى إستخدام نفس النسخه.

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

بدلاً من ذلك، يمكنك حفظ الصورة المستخدمة لكل منهما كـ icon_ca.png (أستخدم أي أسم آخر غير icon.png) وقم بوضعها في المجلد الإفتراضي res/drawable/.

ثم قم بإنشاء ملف icon.xml في res/drawable-en-rCA/ و في res/drawable-fr-rCA/ الذي يشير إلى مصدر icon_ca.png بإستخدام العنصر <bitmap>.

هذا يسمح لك بتخزين نسخة واحدة فقط من ملف PNG وملفين صغيرين XML تشيران إليه. ( أدناه مثال على ملف XML).

 

 

مصادر التطبيق

 

الرسوميات Drawable

لإنشاء اسم مستعار لملف رسوميات موجود، أستخدم عنصر <drawable> مثال:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <drawable name="icon">@drawable/icon_ca</drawable>
</resources>

إذا قمت بحفظ هذا الملف كـdrawables.xml (في دليل مصدر بديل، مثل res/values-en-rCA/)، سيتم تجميعه في أحد المصادر

التي يمكنك الرجوع إليها كـR.drawable.icon، لكنه في الواقع اسم مستعار لمصدر R.drawable.icon_ca (الذي تم حفظه في res/drawable/).

 

 

 

مصادر التطبيق

المخطط Layout

 

لإنشاء اسم مستعار لمخطط موجود، أستخدم العنصر <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 .

 

 

مصادر التطبيق

 

السلاسل والقيم البسيطة الأخرى Strings and other simple values

 

لإنشاء اسم مستعار لسلسلة موجودة، ما عليك سوى استخدام معرف المصدر للسلسلة المطلوبة كقيمة للسلسلة الجديدة. مثال:

<?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/ directory الخاص بمشروعك.

لكل نوع من المصادر، يوجد فئة فرعية R (مثال: R.drawable لكل مصادر الرسوميات)، و لكل مصدر من ذلك النوع، هناك عدد

صحيح ثابت (مثال: R.drawable.icon). هذا العدد الصحيح هو معرف المصدر الذي يمكنك إستخدامه لإستيراد مصدرك.

 

على الرغم من أن فئة R موجودة حيث يتم تخصيص معرف المصدر، فأنت لست بحاجة للبحث هناك أبداً لإكتشاف معرف المصدر. معرف المصدر دائماً يتكون من:

 

  • نوع المصدر: كل مصدر يتم تجميعه في “نوع”، مثل سلسلة، رسوميات، و مخططات. لمزيد من المعلومات عن الأنواع المختلفة، راجع أنواع المصادر.
  • اسم المصدر، إما أن يكون أسم الملف، بإستثناء الإمتداد؛ أو القيمة في XML سمة android:name، إذا كان المصدر قيمة بسيطة (مثل سلسلة).

 

 

 

مصادر التطبيق

 

هناك طريقتان يمكنك بهما الوصول إلى مصدر:

 

  • في التعليمات البرمجيه (الكود): بإستخدام عدد صحيح ثابت من الفئة الفرعية من فئتك R، مثل:
    R.string.hello

السلسلة هي نوع مصدر و مرحباً هي اسم المصدر. هناك العديد من واجهات برمجة تطبيقات الأندرويد التي يمكنها الوصول إلى

مصادرك عندما تقوم بتوفير معرف المصدر في هذا التنسيق. أنظر الوصول إلى المصادر في الكود.

 

  • في ملف XML: إستخدام تركيبة مميزة لـXML التي تتوافق أيضاً مع معرف المصدر المحدد في الفئة R مثل:مصادر
    @string/hello

السلسلة هي نوع المصدر و مرحباً هي اسم المصدر. يمكنك استخدام هذه البنية في مصدر XML في أي مكان حيث يتوقع وجود

قيمة قمت بتوفيرها في مصدر ما. راجع الوصول إلى المصادر من XML .

 

 

 

مصادر التطبيق

 

الوصول إلى المصادر في الكود


يمكنك إستخدام المصدر في كود عن طريق تمرير معرف المصدر كعامل (parameter) في الداله ( method) مثال، يمكنك تعيين ImageView لإستخدام مصدر الصورة في المسار التالي res/drawable/myimage.png بإستخدام ()setImageResource:

ImageView imageView = (ImageView) findViewById(R.id.myimageview);
imageView.setImageResource(R.drawable.myimage);

 

يمكنك أيضاً استرجاع المصادر الفردية بإستخدم الدوال في المصادر، التي يمكنك جلبها عن طريق ()getResources.

 

 

بناء الجملة Syntax

إليك بناء الجملة للإشارة إلى مصدر في الكود:

[<package_name>.]R.<resource_type>.<resource_name>

 

  • <package_name> : هو اسم الحزمة التي يوجد بها المصدر (ليس مطلوباً عندما تقوم بالإشارة إلى مصادر في حزمتك الخاصة).
  • <resource_type>: هي الفئة الفرعية R لنوع المصدر.
  • <resource_name>: هو إما اسم ملف المصدر بدون اللاحقه أو قيمة السمه android:name في عنصر XML (للقيم البسيطة).

راجع أنواع المصادر لمزيد من المعلومات عن كل نوع وكيفية الإشارة إليه.

 

 

 

مصادر التطبيق

 

إستخدام الحاله Use cases

هناك العديد من الدوال التي تقبل معامل معرف المصدر ويمكنك إسترجاع المصادر بإستخدام الدوال في المصادر. يمكنك جلب المصدر بإستخدام ()Context.getResources.

فيما يلي بعض الأمثلة على الوصول إلى المصادر في الكود:

تحذير: يجب ألا تقوم أبداً بتعديل ملف R.java يدوياً – يتم إنشاؤه بواسطة أداة aapt عندما يتم تجميع compiled مشروعك. يتم تجاهل أي

تغييرات عندما تقوم بالتجميع في المرة التاليه.

 

 

مصادر التطبيق

 

الوصول إلى المصادر من XML


يمكنك تعريف قيّم بعض “سمات وعناصر XML” بالإشارة إلى مصدر موجود. سوف تفعل هذا غالباً عندما تنشئ ملفات

المخطط، لتزويد عنصر الواجهة الرسومية widgets الخاص بك بالسلاسل والصور.

مثال، إذا قمت بإضافة زر إلى مخططك، ينبغي عليك أن تستخدم مصدر سلسلة لنص الزر:

<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" />

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

 

 

 

مصادر التطبيق

 

الإشارة إلى سمات النمط

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

عناصر واجهة المستخدم من خلال تصميمهم لمطابقة الأشكال القياسية المقدمة في المظهر theme الحالي، بدلاً من تقديم قيم

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

للإشارة إلى سمة نمط، يكون بناء الجملة متماثل تقريباً مع التنسيق العادي للمصادر، لكن بدلاً من رمز (@)، تستخدم علامة

الإستفهام (?)، و يكون جزء نوع المصدر إختيارياً. مثال:

?[<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 اسم سمة النمط style في الثيم الحالي. يستخدم نظام الأندرويد الآن القيمة المطبقة على

سمة النمط android:textColorSecondary كقيمة لـ android:textColor في عنصر الواجهة الرسومية “الودجت” هذا.

لأن أداة موارد النظام تعرف بأن مصدر السمة متوقع وجوده في هذه الحالة، لن تحتاج إلى التصريح عن النوع (الذي سيكون ?android:attr/textColorSecondary) – يمكنك إستبعاد نوع attr.

 

 

مصادر التطبيق

 

الوصول إلى الملفات الأصلية


في حين أنه من غير الشائع، أنك قد تحتاج للوصول إلى ملفاتك ومجلداتك الأصليه. لكن إن إحتجت لذلك، فإن حفظ ملفاتك في

res/ لن يعمل، لأن الطريقة الوحيدة لقراءة المصدر من res/ هي من خلال معرّف المصدر. بدلاً من ذلك، يمكنك حفظ مصادرك في مجلد “الأصول” assets/.

الملفات المحفوظة في مجلد “الأصول” assets/ لا تعطي معرّف مصدر، لذا لا يمكنك الإشارة إليهم من خلال الفئة R أو من خلال مصادر XML.

بدلاً من ذلك، يمكنك الإستعلام query عن الملفات في مجلد assets/ كما لو كانت ملفات نظام عاديه و قراءة البيانات الخام بإستخدام AssetManager.

مع ذلك، إذا كان كل ما تريده هو إمكانية قراءة البيانات الخام (مثل ملفات الفيديو أو الصوت)، إذاً قم بحفظ الملف في مجلد res/raw/ واقرأ تدفق البايت bytes بإستخدام ()openRawResource.

 

 

مصادر التطبيق

 

الوصول إلى مصادر المنصه


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

مثال، بوفر نظام الأندرويد مصدر تخطيط يمكنك إستخدامه لعناصر القائمة في ListAdapter.

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/ للإتجاه العمودي.

 

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

الأندرويد قد تقوم أحياناً بإضافة مؤهلات تكوين لا تدعمها النسخ الأقدم.

إذا كنت تستخدم مؤهل مصدر جديد، لكنك ترغب في الحفاظ على الكود متوافقاً من النسخ الأقدم، فعندما تقوم النسخ الأقدم من

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

مثال، إذا كانت نسختك من minSdkVersion مضبوطة على 4، وأنت قمت بتأهيل جميع مصادر رسومياتك بإستخدام الوضع الليلي (ليل أو نهار، والتي أضيفت في المستوى API 8)

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

لذا عليك أن تقوم بإستبعاد ذلك المؤهل بحيث تكون مصادر رسومياتك إما drawable/ أو drawable-night/.

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

ثم قم بإنشاء مصادر بديله لتكوينات معينة للجهاز بإستخدام مؤهلات التكوين.

هناك إستثناء وحيد لهذه القواعد: إذا كانت نسختك minSdkVersion هي 4 أو أعلى، فلن تحتاج إلى مصادر رسوميات إفتراضية

عندما تقوم بتوفير مصادر رسوميات بديله مع مؤهل كثافة الشاشة.

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

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

 

 

 

مصادر التطبيق

 

كيف يعثر الأندرويد على أفضل مصدر متوافق


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

لشرح كيف يقوم الأندرويد بإختيار مصدر بديل، أفرض أن مجلدات الرسوميات التاليه يحتوي كلٍ منها على نسخ مختلفة من نفس الصور:

drawable/
drawable-en/
drawable-fr-rCA/
drawable-en-port/
drawable-en-notouch-12key/
drawable-port-ldpi/
drawable-port-notouch-12key/

وأفرض أن ما يلي هو تكوين الجهاز:

 

  • اللغة المحلية = إنجليزية-بريطانيه
  • إتجاه الشاشه = رأسي
  • كثافة الشاشة بالبكسل= hdpi
  • نوع شاشة اللمس = لا تعمل باللمس
  • أسلوب إدخال النص الأساسي = نظام 12مفتاح

من خلال مقارنة تكوين الجهاز بالمصادر البديلة المتاحه، اختار نظام الأندرويد الرسوميات من drawable-en-port.

يتخذ النظام قراره بشأن المصادر التي يجب إستخدامها وفقاً للمنطق التالي:

 

1- استبعاد ملفات المصادر التي تتعارض مع تكوينات الجهاز.

تم استبعاد مجلد اللغة الكندية-الفرنسيه drawable-fr-rCA/، لأنه يتناقض مع اللغة المحلية البريطانية en-GB.

 إستثناء*: كثافة الشاشة بالبكسل هو المؤهل الوحيد الذي لم يتم استبعاده بسبب التعارض.

على الرغم من أن كثافة الجهاز هي hdpi، drawable-port-ldpi/ لم يتم استبعاده لأن كل كثافة للشاشة تعتبر مطابقه في هذه المرحلة. مزيد من المعلومات متاحة في مستند دعم الشاشات المتعددة.

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

 

مصادر التطبيق

 

2- اختيار المؤهل (التالي) ذو الأولويه الأعلى في القائمة (الجدول 2). (بدءاً من MMC، نزولاً لأسفل الجدول).

3- هل تحتوي أي من مجلدات المصادر على هذا المؤهل؟

    • إذا كانت الإجابة لا: أرجع إلى الخطوة الثانيه وانظر إلى المؤهل التالي. (في المثال، الإجابة هي “لا” حتى يتم الوصول إلى مؤهل اللغة).
    • إذا كانت الإجابة “نعم”، أنتقل إلى الخطوة الرابعه.

4- إستبعاد مجلدات المصادر التي لا تحتوي على هذا المؤهل. في المثال، استبعد النظام جميع المجلدات التي لا تحتوي على مؤهل لغة:

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

 

5- عد و كرر الخطوات 2، 3، 4 حتى لا يتبقى سوى مجلد واحد. في المثال، إتجاه الشاشه هو المؤهل التالي لمعرفة هل توجد

تطابقات. لذا، المصادر التي لا تطابق إتجاه الشاشه تم إستبعادها:

المجلد المتبقي هو drawable-en-port.

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

 

على سبيل المثال، إذا كانت إعدادت اللغة على الإنجليزية (“en”)، فإن أي مجلدات مصادر تحتوي على مؤهل لغة مضبوط على لغة

غير اللغة الإنجليزية لا يتم تضمينه مطلقاً في مجموعة المصادر التي تم التحقق منها (على الرغم من أن مجلد مصادر لا يحتوي على مؤهل لغة سيتم تضمينه).

عند اختيار المصادر بناءً على مؤهل حجم الشاشة، فإن النظام سوف يستخدم مصادر مصممه لشاشات أصغر من الشاشة الحالية

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

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

مصادر أخرى تطابق تكوينات الجهاز (مثال، إذا تم وسم جميع مصادر المخطط بمؤهل من الحجم “اكس لارج” xlarge ، لكن الجهاز يحتوي على شاشة من الحجم العادي).

 

 ملاحظة: تعد أولوية المؤهل (في الجدول 2) أكثر أهمية من عدد المؤهلات التي تطابق الجهاز تماماً. مثال، في الخطوة الرابعة أعلاه، الاختيار الأخير في القائمة يحتوي على 3 مؤهلات تطابق الجهاز تماماً (الإتجاه، نوع شاشة اللمس، أسلوب الإدخال).

بينما drawable-en تحتوي فقط على معامل واحد يتطابق (اللغة). مع ذلك، اللغة لها الأولوية أكثر من تلك المؤهلات الأخرى، لذا drawable-port-notouch-12key خارج المعادلة.

 


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

الإعلانات

18 thoughts on “مصادر التطبيق نظرة عامه”

اترك رد