20 -اندرويد – دعم شاشات مختلفة Supporting Different Screens

ملاحظة : الموضوع عبارة عن حلقة من حلقات سلسلة برمجة وتطوير اندرويد Android Development

اندرويد : دعم شاشات مختلفة  Supporting Different Screens

السلام عليكم ورحمة الله وبركاته

سوف نتعلم في هذا الدرس مايلي :

  • إنشاء التنسيقات المختلفة Create Different Layouts
  • إنشاء الرسوميات المختلفة Create Different Bitmaps

يقوم اندرويد بتصنيف شاشات الاجهزة باستخدام خاصيتين عامتين :

  • الحجم
  • دقة الشاشة (عدد البكسلات ضمن الانش).

يجب ان تتوقع ان يتم تثبيت تطبيقك على اجهزة ذات قياسات مختلفة ودقات مختلفة density.

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

هنالك بشكل عام اربع قياسات عامة : القياس الصغير small , العادي normal , الكبير large, والكبير جدا xlarge.

وهنالك 4 تصنيفات عامة لدقات الشاشات   : دقة منخفضة low (ldpi), متوسطة (mdpi), مرتفعة (hdpi) , ومرتفعة جدا (xhdpi).

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

يجب الانتباه إلى ان اتجاه الشاشة (افقي ام عمودي landscape or portrait) يعتبر من الامور المتغيرة التي تاثر على حجم الشاشة, لذلك فإنه يتوجب على العديد من التطبيقات ان تقوم بتنقيح تنسيقاتها لكي تمنح المستخدم افضل تجربة يمكن ان يحصل عليها في كل الاوضاع المختلفة للشاشة (افقي او عمودي).

انشاء تنسيقات مختلفة Create Different Layouts

لكي تحسن من تجربة المستخدم مع الشاشات ذات القياسات المختلفة , فإنه يتوجب عليك انشاء ملف تنسيق XML فريد لكل حجم من احجام الشاشات التي ترغب بدعمها.

ويجب ان يتم حفظ كل ملف ضمن مسار الموارد المناسب, ويسمى ويتبع الاسم باللاحقة -<screen_size>. على سبيل المثال, بالنسبة للتنسيقات الفريدة الخاصة بالشاشات ذات الحجم الكبير فإنه يتوجب حفظها تحت المسار التالي: res/layout-large/.

ملاحظة : يقوم اندرويد بشكل اوتوماتيكي بتقييس تنسيقك لكي يناسب الشاشة بشكل جيد. لذلك فإنك لا تحتاج القلق حول القياس المطلق لعناصر واجهة المستخدم UI, ولكن بدلا من ذلك يتوجب عليك التركيز على بنية التنسيق layout structure والتي تؤثر على تجربة المستخدم( مثل حجم او موضع العناصر الاساسية نسبة إلى بعضها البعض ).

على سبيل المثال, يتضمن هذا المشروع تنسيق افتراضي بالاضافة إلى تنسيق بديل خاص من اجل الشاشات ذات القياس الكبير  large screens:

MyProject/

res/

layout/

main.xml

layout-large/

main.xml

يجب ان تكون اسماء الملفات متشابهه تمام , ولكن الاختلاف يكمن في محتواها وذلك بهدف الحصول على افضل واجهة مستخدم UI لتناسب حجم الشاشة.

وبشكل مشابه , نقوم بالاشارة إلى ملف التنسيق ضمن التطبيق كما يلي:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

يقوم النظام بتحميل ملف التنسيق من مسار التنسيق المناسب اعتمادا على حجم شاشة الجهاز الذي يعمل عليه جهازك.

لمزيد من المعلومات حول كيفية اختيار اندرويد للمورد المناسب , بإمكانكم الاطلاع على الرابط التالي: Providing Resources.

فيما يلي مشروع اخر يعتمد على تنسيق بديل من اجل اعداد التنسيق ليعمل بشكل عرضي landscape orientation .

 MyProject/res/

layout/

main.xml

layout-land/

main.xml

بشكل افتراضي, يتم استخدام الملف layout/main.xml  من اجل العرض بشكل طولي portrait orientation.

اذا رغبت في ان تزود اندرويد بتنسيق خاص من اجل العرض بشكل landscape ,وذلك بالنسبة للشاشات الكبيرة ,  عندها يتوجب عليك استخدام كل من معرفي large  و land.

MyProject/

res/

layout/              # default (portrait)

main.xml

layout-land/         # landscape

main.xml

layout-large/        # large (portrait)

main.xml

layout-large-land/   # large landscape

main.xml

 انشاء الرسوميات المختلفة Create Different Bitmaps

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

لكي نقوم بتوليد هذه الصور, يجب البدء بمورد raw resource بالصيغة الشعاعية , ومن ثم توليد الصورة بكل دقة من الدقات باستخدام التقييس التالي:

  • xhdpi: 2.0
  • hdpi: 1.5
  • mdpi: 1.0 (baseline)
  • ldpi: 0.75

هذا يعني انه في حال قمت بتوليد صورة بالابعاد التالية 200*200 بالنسبة للاجهزة xhdpi , فإنه يتوجب عليك توليد نفس المورد بالابعاد 150*150 وذلك للاجهزة hdpi , و 100*100 للاجهزة mdpi و 75*75 للاجهزة idpi.

ومن ثم يجب ان تقوم بوضع الملف ضمن مسار الموارد القابلة للرسم المناسب drawable resource directory:

MyProject/

res/

drawable-xhdpi/

awesomeimage.png

drawable-hdpi/

awesomeimage.png

drawable-mdpi/

awesomeimage.png

drawable-ldpi/

awesomeimage.png

في كل مرة تقوم فيها بالاشارة إلى @drawable/awesomeimage, يقوم النظام باختيار الصورة النقطية المناسبة اعتمادا على دقة الشاشة.

ملاحظة : موارد الدقة المنخفضة low-density(idpi) ليست دائما ضرورية. لاننا عندما تقوم بتزويد hdpi , يقوم النظام بتقييسها نزولا بمقدار النصف حتى تناسب الشاشات ldpi.

عند هذا الحد سوف نتوقف , ارجو ان تكون هذه اللمحة السريعة كافية لالقاء الضوء على اسلوب دعم الشاشات المتخلفة.وإلى لقاء قريب في درس لاحق يتحدث عن “دعم عدة اصدارات مختلفة لمنصات العمل Supporting Different Platform Versions”

وإلى ذلك الحين استودعكم الله والسلام عليك ورحمة الله وبركاته.

Advertisements

, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

  1. أضف تعليق

اترك رد

Please log in using one of these methods to post your comment:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s

%d مدونون معجبون بهذه: