آموزش برنامه نویسی اندروید - قسمت ۱۱: بررسی فولدر res
شنبه 28 دی 1392 10:50 AM
در یک کلام، کلیۀ عناصر موجود در یک اپلیکیشن اندرویدی از Layout گرفته تا دیگر عناصر مثل عکس، فایل صوتی، فایل تصویری، انیمیشن، فونت، آیکون و ... در فولدر res قرار خواهند گرفت(واژه res مخفف واژه resources به معنی "منابع" است).
چنانچه بخواهیم به طور کاربردی عملکرد این فولدر را بررسی کنیم به مثالی اکتفا می کنیم. فرض کنیم شخصی هم دارای یک تلفن همراه اندرویدی دو انیچی است و هم دارای یک تبلت ده اینچی. حال ایشان اپلیکیشن خاصی را تهیه کرده و تمایل دارد که روی هر دو دستگاه نصب کند. زمانیکه وی این اپلیکیشن را روی تلفن همراه خود نصب می کند پیش از نصب سیستم عامل اندروید خصوصیات گوشی را مورد بررسی قرار می دهد و می بیند که این گوشی دارای اندازه ای معادل با دو اینچ است و زبان انتخابی آن فارسی است. اکنون اندروید پس از پی بردن به این اطلاعات اقدام به استفاده از منابع و عناصر متناظر با ویژگی های گوشی خواهد کرد. به عبارت دیگر یکی از فولدرهای زیرشاخه فولدر res مربوط به عکس های مورد استفاده در صفحه نمایش های دو اینچی است از این رو اندروید برای نصب اپلیکیشن از عکس های داخل این فولدر استفاده خواهد کرد. یا از آنجا که زبان انتخابی گوشی زبان فارسی است، از این رو اندروید در حین نصب به فولدری در res مراجعه خواهد کرد که برای زبان فارسی در نظر گرفته شده است.
به همین منوال پس از نصب اپلیکیشن روی تبلت اندروید خواهد دید که اندازه صفحه نمایش این دستگاه ده اینچ است پس به سراغ فولدری در زیرمجموعه فولدر res خواهد رفت که دارای عکس های بهینه شده برای صفحه نمایش های بزرگ می باشد. از سوی دیگر از آنجا که زبان انتخابی تبلت زبان انگلیسی است، در حین نصب به سراغ فولدری خواهد رفت که معادل انگلیسی کلیۀ واژگان، عبارات و جملات در آن قرار گرفته است.
نکته ای که در ارتباط به فولدرهای زیرمجموعه res وجود دارد این است که اسامی کلیۀ فولدرهای زیرمجموعه از پیش تعیین شده هستند و ما به عنوان یک توسعه دهنده اپلیکیشن اندرویدی اجازه نداریم تا هر نوع فولدری به هر نامی در فولدر res ایجاد کنیم. مثلاً فرض کنیم که می خواهیم اپلیکیشنی طراحی کنیم که عکس های شخصی ما را نشان دهد. حال نیاز داریم تا تعدادی عکس شخصی را وارد برنامه خود کنیم اما به هیچ وجه اجازه نداریم فولدری تحت عنوان Personal Photos به معنی "عکس های شخصی" بسازیم.
فولدرهای زیرمجموعه که می توانند در فولدر res قرار گیرند عبارتند از:
1. فولدری تحت عنوان anim که برای ذخیره سازی انیمیشن در نظر گرفته شده است. واژه anim مخفف واژۀ animation به معنی "انیمیشن" یا "تصویر متحرک" است.
2. فولدری تحت عنوان color به معنی "رنگ" که برای ذخیره سازی رنگ ها در نظر گرفته شده است.
3. فولدری تحت عنوان drawable به منظور ذخیره سازی تصاویر، شکل ها و چیزهایی از این دست مورد استفاده قرار می گیرد. فرمت عکس هایی که می توانند در این فولدر قرار گیرند می تواند یکی از فرمت های png یا jpg یا gif یا 9.png باشد.
4. فولدری تحت عنوان drawable-xhdpi جزو فولدرهایی که به صورت پیش فرض ممکن است در یک اپلیکیشن ایجاد نگردد. این فولدر در حقیقت به عنوان نسخه ای از فولدر drawable است که برای تبلت هایی با صفحه خیلی بزرگ مورد استفاده قرار می گیرد(نکته ای که در ارتباط به نحوه نامگذاری این فولدر می بایست همواره مد نظر قرار گیرد این است که پس از نوشتن نام drawable یک Dash یا خط تیره قرار داده سپس عبارت xhdpi را می نویسیم(فراموش نکنیم که Dash با Underscore فرق دارد و اگر Underscore قرار دهیم با مشکل مواجه می شویم. در واقع با پایین نگه داشتن دکمه Shift در حین زدن دکمه Dash می توانیم Underscore را تایپ کنیم.) حرف x مخفف واژه extra به معنی "خیلی" است. حرف h مخفف واژه high به معنی "زیاد" است. حروف dpi مخفف واژگان Dots per inch به "معنی نقطه در هر اینچ" می باشند).
5. فولدری تحت عنوان drawable-hdpi به عنوان نسخه ای از فولدر drawable است که برای تلفن ها یا تبلت هایی با صفحه بزرگ مورد استفاده قرار می گیرد(حرف h مخفف کلمه high به معنی "بزرگ" است).
6. فولدری تحت عنوان drawable-ldpi به عنوان نسخه ای از فولدر drawable است که برای تلفن هایی به اندازه صفحه کوچک(مثلاً دو اینچی) مورد استفاده قرار می گیرد(حرف l مخفف کلمه low به معنی "کوچک" است).
7. فولدری تحت عنوان drawable-mdpi به عنوان نسخه ای از فولدر drawable است که برای تلفن هایی به اندازه صفحه متوسط مورد استفاده قرار می گیرد(حرف m مخفف کلمه medium به معنی "متوسط" است).
8. فولدری تحت عنوان layout به منظور ذخیره سازی UI یا همان "رابط گرافیکی کاربر" مورد استفاده قرار می گیرد(به عبارت دیگر همان صفحۀ اصلی اپلیکیشن که پس از اجرا بالا می آید در این فولدر قرار می گیرد).
9. فولدری تحت عنوان menu به منظور ذخیره سازی منوها مورد استفاده قرار می گیرد(منوها ابزارهایی هستند که با استفاده از دکمه Menu تلفن همراه یا تبلت فرا خوانده می شوند که از طریق گزینه های داخل منو می توان به بخش های مختلف اپلیکیشن رفت).
10. فولدری تحت عنوان raw که "خام" معنی می دهد به منظور ذخیره سازی فایل هایی از قبیل MP3 . نکته ای که در مورد این فولدر می بایست مد نظر قرار دهیم این است که عناصر داخل این فولدر توسط اندروید Compressed یا فشرده نمی شوند.
11. فولدری تحت عنوان values به معنی "مقادیر" به منظور ذخیره سازی اسامی، متون و جملات به کار می رود. نکته ای که در مورد نحوه ذخیره سازی این چنین عناصری در فولدر values می بایست همواره مد نظر قرار داده شود این است که فایل های XML که در این فولدر قرار می گیرند می بایست از نامگذاری خاصی که از پیش تعیین شده است پیروی کنند.
از اینرو برای ذخیره سازی داده هایی از جنس اعداد و کلمات در کنار یکدیگر می بایست فایلی تحت عنوان arrays.xml ایجاد کرده و آن را داخل فولدر values قرار دهیم.
چنانچه بخواهیم لیستی از رنگ ها داشت باشیم، می توانیم فایلی تحت عنوان colors.xml ایجاد کرده و مقادیر رنگ های مد نظر خود را در آن وارد کنیم.
چنانچه بخواهیم لیستی از ابعداد و اندازه ها داشته باشیم، می توانیم فایلی تحت عنوان dimens.xml ایجاد کنیم. کلمه dimens مخفف کلمه dimensions به معنی "ابعاد" است. کاربرد این فایل به این شکل است که می توانیم در آن یکسری ابعاد تعریف کرده سپس آنها را در برنامه خود مثلاً برای اندازه یک متن استفاده کنیم.
چنانچه بخواهیم یکسری کلمه یا عبارت یا نوشته ایجاد کنیم و آنها را در برنامه خود استفاده کنیم می توانیم از فایلی تحت عنوان strings.xml استفاده کنیم. به طور مثال فرض کنیم که می خواهیم اپلیکیشن خود را با نام خدا آغاز کنیم، از اینرو یک string با مقدار In the name of God در فایل strings.xml ایجاد کرده سپس در هر کجای برنامه که بخواهیم می توانیم آن را فرا بخوانیم(لازم به ذکر است کلمه انگلیسی God با کلمه god دارای تفاوت معنایی است. در واقع این کلمه با حرف بزرگ به معنای "خدای یکتا" است در حالیکه کلمه god با حرف کوچک به معنی "الهه" است. مثلاً The god of water به معنی "الهه آب" است).
چنانچه با HTML آشنایی داشته باشیم می دانیم که برای شکل دادن به ظاهر عناصری که توسط کدهای HTML ایجاد می شوند می توانیم از CSS استفاده کنیم.
در توسعه اندروید هم چیزی شبیه به CSS تحت عنوان styles.xml وجود دارد. موارد استفاده این style ها ایجاد خصوصیاتی کلی است که با نسبت دادن آن خصوصیات به عنصری در اپلیکیشن دیگر نیاز به تعریف تک تک آن خصوصیات برای هر چیزی در اپلیکیشن نیست.
اپلیکیشنی که در برگیرندۀ کلیه فولدرها و فایلی های توضیح داده شده در این آموزش باشد به شکل زیر خواهد بود:
مدیر تالار های: