0

آموزش برنامه نویسی اندروید

 
hosseinb68
hosseinb68
کاربر طلایی1
تاریخ عضویت : بهمن 1389 
تعداد پست ها : 1269
محل سکونت : بوشهر

آموزش برنامه نویسی اندروید - قسمت ۱۴: طراحی Layout برای دستگاه هایی با اندازه صفحه متفاوت
شنبه 28 دی 1392  10:54 AM

معرفی Size و Density

صفحه دستگاه هایی که به سیستم عامل اندروید مجهز می باشند دارای دو خصوصیت کلی تحت عناوین Size به معنی "اندازه" و Density به معنی "تراکم" می باشند. در واقع یک اپلیکیشن موفق به اپلیکیشنی می توان گفت که روی دستگاه هایی با Size ها و Density های متفاوت نصب شده و کار کند. بنابراین ما به عنوان یک توسعه دهنده اندروید می بایست منابع متفاوتی را در اپلیکیشن خود استفاده کنیم تا بتوانیم اپلیکیشن خود را برای هر دستگاهی بهینه سازیم.

به طور کلی چهار Size کلی در رابطه با دستگاه های اندرویدی وجود دارد که عبارتند از: Small به معنی "کوچک"، Normal به معنی "معمولی"، Large به معنی "بزرگ" و Xlarge به معنی "خیلی بزرگ".

در حقیقت منظور از Size یک دستگاه، اندازه دستگاه از گوشۀ سمت چپ پایین تا گوشۀ سمت راست بالای صفحه نمایش بر حسب اینچ می باشد. برای روش تر شدن مطلب به تصویر اصلی مطلب دوباره توجه کنید.


در حقیقت در تصویر فوق از نقطۀ شماره یک تا نقطۀ شماره دو 4.2 اینچ فاصله است.

در آموزش دوازدهم دیدیم که برای اینکه بتوانیم منابعی برای زبان های مختلف داشته باشیم می بایست فولدرهای مجزایی برای زبان های مختلف ایجاد کنیم. در اینجا نیز قضیه به همین شکل است. در واقع برای آنکه بتوانیم اپلیکیشنی طراحی کنیم که در دستگاه هایی با اندازه صفحه متفاوت بهینه شده باشد، می بایست فولدرهای مجزایی متناظر با اندازه های تعریف شده در سیستم عامل اندروید برای صفحه های مختلف ایجاد نماییم.

به عنوان مثال برای ذخیره سازی تصاویری برای دستگاه هایی با صفحه نمایشی با Density بسیار زیاد می توانیم فولدری تحت عنوان drawable-xhdpi در پروژه خود ایجاد کنیم.

علاوه بر این به خاطر داشته باشیم که Screen Orientation به معنی "جهت قرارگیری صفحه" که می تواند Landscape یا"افقی" یا Portrait یا "عمودی" نیز می تواند به نوعی اندازه صفحه محسوب شوند. به عبارت دیگر می توانیم اپلیکیشن خود را طوری طراحی کنیم که شکل ظاهری اپلیکیشن ما در حالت های Landscape و Portrait بهینه باشد(لازم به ذکر است که واژه Landscape در فارسی به معنی "چشم انداز" می باشد و واژه Portrait به معنی "تصویر صورت" است اما از آنجا که این واژگان در صنعت عکاسی دیجیتال به حالت های به ترتیب افقی وعمودی عکس گفته می شود این معانی را در طول دوره لحاظ خواهیم کرد).


معرفی کلیۀ فولدرهای پیش فرض layout

به منظور بهینه سازی اپلیکیشن خود برای اندازه های صفحه متفاوت نیاز است تا برای هر اندازه صفحه که می خواهیم اپلیکیشن ما برای آن اندازه بهینه شود یک فایل XML ایجاد کنیم(همانطور که قبلاً توضیح داده شده است UI یا همان رابط گرافیکی کاربر توسط XML ایجاد می شود). به عبارت دیگر هر Layout که با XML ایجاد می شود می بایست داخل یک فولدر مرتبط با اندازه مد نظر که اسامی آنها از پیش در سیستم عامل اندروید تعریف شده است قرار گیرد.

برای روشن شدن مطلب، در پروژه ای که در قسمت هشتم تحت عنوان My First Android Project ایجاد کردیم اقدام می کنیم به ایجاد کلیۀ فولدر های لازم برای ساپورت کردن اندازه های صفحه متفاوت در دستگاه های مختلف به طوریکه پس از تکمیل اینکار پروژه ما به شکل زیر خواهد بود:


920431-a14-IMAGE 2.jpg

همانطور که در تصویر فوق مشاهده می شود، فولدرهایی که برای اندازه های متفاوت صفحه نمایش ایجاد شده اند از شماره یک تا هشت شماره گذاری شده اند. به طول کلی فولدر شماره یک یا همان فولدر layout به طور پیش فرض برای حالت Portrait توسط اندروید مورد استفاده قرار می گیرد. فولدر شماره دو یا layout-land برای حالت Landscape مورد استفاده قرار می گیرد. فولدر شماره سه یا layout-large برای دستگاه هایی با صفحه بزرگ در حالت Portrait استفاده می شود. فولدر شماره چهار یا layout-large-land برای دستگاه هایی با صفحه بزرگ در حالت Landscape استفاده می شود. فولدر شماره پنج یا layout-normal برای دستگاه هایی با اندازه صفحه نرمال مورد استفاده قرار می گیرد. فولدر شماره شش یا layout-small برای دستگاه هایی با اندازه صفحه کوچک مورد استفاده قرار می گیرد. فولدر شماره هفت یا layout-xlarge برای دستگاه هایی با صفحه بزرگ در حالت Portrait مورد استفاده قرار گرفته و در نهایت فولدر شماره هشت یا layout-xlarge-land برای دستگاه هایی با صفحه نمایش بسیار بزرگ در حالت Landscape مورد استفاده قرار خواهد گرفت.

به طور خلاصه، با قرار دادن فایل های مختلف XML مرتبط با UI در هر یک از این فولدرها، در حین اجرای اپلیکیشن بسته به اندازه صفحه نمایش دستگاه، سیستم عامل اندروید از منبع متناظر با آن دستگاه برای اجرای اپلیکیشن استفاده خواهد کرد. اما نکته ای که در اینجا حائز اهمیت است این است که نام فایل XML که در کلیۀ این فولدر ها قرار می گیرد برای یک Activity خاص می بایست یکی باشد. برای روشن شدن این مسئله به پروژه ای که در جلسه هشتم ساختیم رجوع می کنیم:


920431-a14-IMAGE 3.jpg

زمانیکه پروژه ای در محیط برنامه نویسی اکلیپس می سازیم، اکلیپس به طور خودکار یک فایل XML در فولدر layout می سازد و این فایل مرتبط با همان Activity یی است که در حین ساخت یک پروژه جدید ایجاد می کنیم. به عبارت دیگر در پروسه ساخت My First Android Project در جلسه هشتم یک Activity تحت عنوان MainActivity ساختیم. محیط برنامه نویسی اکلیپس به طور خودکار فایلی در داخل فولدر layout تحت عنوان main.xml ساخته و آن را به MainActivity مرتبط ساخته است. در واقع پس از اجرای این اپلیکیشن خواهیم دید که تنها Activity اپلیکیشن ما که MainActivity است پس از اجرای برنامه فایل main.xml را فراخواهد خواند.

پس از توضیح پیرامون این موضوع حال روشن است که اگر بخواهیم این اپلیکیشن را که فقط و فقط دارای یک Activity است را روی دستگاه هایی با اندازه های صفحه متفاوت اجرا کنیم و از سیستم عامل اندروید بخواهیم که با توجه به اندازه صفحه نمایش دستگاهی که اپلیکیشن روی آن اجرا می شود به فولدر مرتبط با اندازه آن صفحه نمایش رجوع کند، می بایست نام فایل XML قرار گرفته در هر یک از این فولدرها برای MainActivity یکسان باشد. علت این مسئله هم آن است که در حقیقت MainActivity یک کلاس جاوا است و در این کلاس ما به یک فایل XML لینک داده ایم که نامش main.xml است. حال اگر نام این فایل XML در فولدرهای مختلف یکسان نباشد، در حین اجرای برنامه سیستم عامل اندروید فایل هایی با نام های دیگر را پیدا نکرده و مجبور است که از فولدر پیش فرض که همان فولدر layout است استفاده کند.

تشکرات از این پست
amin_j nikonazar
دسترسی سریع به انجمن ها