آموزش برنامه نویسی برای اندروید با ایکلیپس(14)- فولدر res

در آموزش 8 توضیح مختصری از این پوشه داده شده اما در این آموزش بیشتر به آن می پردازیم. همانطور که گفته شد، پوشه ی res شامل منابع مختلفی که شما در اپلیکیشن تان می توانید استفاده کنید، می باشد. شما باید همیشه همه ی
يکشنبه، 5 بهمن 1393
تخمین زمان مطالعه:
موارد بیشتر برای شما
آموزش برنامه نویسی برای اندروید با ایکلیپس(14)- فولدر res
آموزش  برنامه نویسی  برای اندروید با ایکلیپس(14)-  فولدر res

 

مترجم: حبیب الله علیخانی
منبع: راسخون




 

فولدر res (resources)

در آموزش 8 توضیح مختصری از این پوشه داده شده اما در این آموزش بیشتر به آن می پردازیم. همانطور که گفته شد، پوشه ی res شامل منابع مختلفی که شما در اپلیکیشن تان می توانید استفاده کنید، می باشد. شما باید همیشه همه ی منابعی که اپلیکیشن شما برای مصرف نیاز دارد، را واقعی سازی کنید. همه ی منابع باید در زیر شاخه ی res گروهبندی شوند تا درخواست آن ها بهتر انجام شود. این منابع مانند عکس، عکس، فایل صوتی، فایل تصویری، انیمیشن، فونت، آیکون و ...می توان باشد.
فرض کنید اپلیکیشنی را ایجاد کرده اید و می خواهید هم در تلفن دو اینچی(با زبان فارسی) و هم در تبلت ده اینچی(با زبان انگلیسی) نصب کنید. قبل از نصب این اپلیکیشن سیستم عامل اندروید خصوصیات گوشی را بررسی می کند و در می یابد که اندازه ی گوشی دو اینچ است و زبان آن فارسی است. و پس از آن از منابع استفاده می کند. مثلا در فولدر res زیرشاخه ای وجود دارد که عکس های مربوط به صفحه نمایش دو اینچی در آن وجود دارد و اندروید برای نصب اپلیکیشن از عکس های داخل این فولدر استفاده می کند و همچنین برای زبان گوشی هم به همین صورت است و فولدری در res وجود دارد که برای زبان فارسی است. در این تبلت ده اینچی هم اندروید به فولدری در res که مربوط به عکس های آن است و همچنین سراغ فولدری که مربوط به انگلیسی است، مراجعه می کند.
اکنون در می یابیم که برای هر نوع گوشی و هر نوع فایل باید فولدرهایی بسازیم اما نکته ی مهم این است که این نام ها برای فولدرها ازپیش تعیین شده است و ما نمی توانیم هر نامی برای آنها انتخاب کنیم.
فولدرهایی که می توانند در فولدر res قرار گیرند به صورت زیر است:

.1 فولدری به نام anim برای ذخیره سازی انیمیشن(anim مخفف animation) می تواند وجود داشته باشد.
.2 فولدری به نام color برای ذخیره سازی رنگ ها می تواند وجود داشته باشد.
.3 فولدری به نام drawable برای ذخیره سازی تصاویر، شکل ها و مانند آن مورد استفاده قرار می گیرد. فرمت عکس هایی که می توانند در این فولدر قرار گیرند می تواند یکی از فرمت های png یا jpg یا gif یا 9.png باشد.
4. فولدری به نام drawable-xhdpi جزو فولدرهایی که ممکن است به صورت پیش فرض در یک اپلیکیشن ایجاد نگردد. این فولدر به عنوان نسخه ای از فولدر drawable است که برای تبلت هایی با صفحه خیلی بزرگ مورد استفاده قرار می گیرد. حرف 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 برای ذخیره سازی منوها مورد استفاده قرار می گیرد)از طریق گزینه های داخل منو می توان به بخش های مختلف اپلیکیشن رفت(.
10. فولدری به نام raw برای ذخیره سازی فایل هایی از قبیل MP3 می باشد. نکته ی مهم این است که عناصر داخل این فولدر توسط اندروید Compressed یا فشرده نمی شوند.
.11 فولدری به برای ذخیره سازی اسامی، متون و جملات به کار می رود. نکته ی مهم در مورد نحوه ذخیره سازی این چنین عناصری در فولدر values این است که فایل های XML که در این فولدر قرار می گیرند می بایست از نامگذاری خاصی که از پیش تعیین شده است پیروی کنند. از اینرو برای ذخیره سازی داده هایی از جنس اعداد و کلمات در کنار یکدیگر می بایست فایلی تحت عنوان arrays.xml ایجاد کرده و آن را داخل فولدر values قرار دهید. اگر بخواهید لیستی از رنگ ها داشت باشید، می توانید فایلی تحت عنوان colors.xml ایجاد کنید و مقادیر رنگ های مد نظر خود را در آن وارد کنید. و اگر بخواهید لیستی از ابعداد و اندازه ها داشته باشید، می توانید فایلی تحت عنوان dimens.xmlایجاد کنید که کلمه dimens مخفف dimension است. کاربرد این فایل به این شکل است که می توانید در آن یکسری ابعاد تعریف کرده سپس آنها را در برنامه خود مثلاً برای اندازه یک متن استفاده کنید. اگر بخواهید یکسری کلمه یا عبارت یا نوشته ایجاد کنید و آنها را در برنامه خود استفاده کنید می

توانید از فایلی تحت عنوان strings.xml استفاده کنید. چنانچه با HTML آشنایی داشته باشید می دانید که برای شکل دادن به ظاهر عناصری که توسط کدهای HTML ایجاد می شوند می توانید از CSS استفاده کنید. در توسعه اندروید هم چیزی شبیه
به CSS تحت عنوان styles.xml وجود دارد. موارد استفاده این style ها ایجاد خصوصیاتی کلی است که با نسبت دادن آن خصوصیات به عنصری در اپلیکیشن دیگر نیاز به تعریف تک تک آن خصوصیات برای هر چیزی در اپلیکیشن نیست.
تصویر زیر برای اپلیکیشنی است که کلیه فولدرها و فایلی های توضیح داده شده در بالا را شامل می شود:
آموزش  برنامه نویسی  برای اندروید با ایکلیپس(14)-  فولدر res

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

به منظور بهینه سازی اپلیکیشن خود برای اندازه های صفحه متفاوت نیاز است تا برای هر اندازه صفحه که می خواهیم اپلیکیشن ما برای آن اندازه بهینه شود یک فایل XML ایجاد کنید )همانطور که قبلاً توضیح داده شده است UI یا همان رابط گرافیکی کاربر توسط XML ایجاد می شود) به عبارت دیگر هر Layout که با XML ایجاد می شود می بایست داخل یک فولدر مرتبط با اندازه مد نظر که اسامی آنها از پیش در سیستم عامل اندروید تعریف شده است قرار گیرد.
کلیۀ فولدر های لازم برای ساپورت کردن اندازه های صفحه متفاوت در دستگاه های مختلف به شکل زیر خواهد بود:
آموزش  برنامه نویسی  برای اندروید با ایکلیپس(14)-  فولدر res
همانطور که در تصویر فوق مشاهده می شود، فولدرهایی که برای اندازه های متفاوت صفحه نمایش ایجاد شده اند. به طول کلی فولدر 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 خاص می بایست یکی باشد.
برای روشن شدن این مسئله به زیر توجه کنید:
آموزش  برنامه نویسی  برای اندروید با ایکلیپس(14)-  فولدر res
زمانیکه پروژه ای در محیط برنامه نویسی اکلیپس می سازیم، اکلیپس به طور خودکار یک فایل 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 است استفاده کند.
استفاده از مطالب این مقاله با ذکر منبع راسخون بلامانع می باشد.



 

 



ارسال نظر
با تشکر، نظر شما پس از بررسی و تایید در سایت قرار خواهد گرفت.
متاسفانه در برقراری ارتباط خطایی رخ داده. لطفاً دوباره تلاش کنید.
موارد بیشتر برای شما
تعجب مجری شبکه منوتو از قدرت نیروهای ویژه حزب الله!
play_arrow
تعجب مجری شبکه منوتو از قدرت نیروهای ویژه حزب الله!
حمله جنگنده های رژیم صهیونیستی به محله اللیلاکی
play_arrow
حمله جنگنده های رژیم صهیونیستی به محله اللیلاکی
شعار مردم بعد از تجمع در میدان فلسطین در واکنش به اتفاقات لبنان: انتقام انتقام!
play_arrow
شعار مردم بعد از تجمع در میدان فلسطین در واکنش به اتفاقات لبنان: انتقام انتقام!
ارتباط مستقیم شبکه سه با لبنان / خبرنگار شبکه سه روی آنتن تلویزیون: اگر سیدحسن نصرالله شهید شده باشد...
play_arrow
ارتباط مستقیم شبکه سه با لبنان / خبرنگار شبکه سه روی آنتن تلویزیون: اگر سیدحسن نصرالله شهید شده باشد...
واکنش آنتونی بلینکن وزیرخارجه ‎آمریکا به اتفاقات ساعات اخیر در لبنان
play_arrow
واکنش آنتونی بلینکن وزیرخارجه ‎آمریکا به اتفاقات ساعات اخیر در لبنان
ضامن سلامت حرکت ملت ایران
play_arrow
ضامن سلامت حرکت ملت ایران
آب خوردن عجیب رییس شورای ریاستی انتقالی هائیتی هنگام سخنرانی در سازمان ملل!
play_arrow
آب خوردن عجیب رییس شورای ریاستی انتقالی هائیتی هنگام سخنرانی در سازمان ملل!
برجام و FATF پوشش‌هایی برای جاسوسی
play_arrow
برجام و FATF پوشش‌هایی برای جاسوسی
نتانیاهو در سازمان ملل باز هم تابلو و نقشه از ایران به نمایش گذاشت!
play_arrow
نتانیاهو در سازمان ملل باز هم تابلو و نقشه از ایران به نمایش گذاشت!
پیام صوتی کودک ایرانی خطاب به امام حسین (ع)
play_arrow
پیام صوتی کودک ایرانی خطاب به امام حسین (ع)
ماجرای عصبانیت رهبر انقلاب از بنی‌صدر از زبان محسن رضایی
play_arrow
ماجرای عصبانیت رهبر انقلاب از بنی‌صدر از زبان محسن رضایی
شنیده شدن صدای تیراندازی در هنگ مرزی منطقه تهلاپ میرجاوه
play_arrow
شنیده شدن صدای تیراندازی در هنگ مرزی منطقه تهلاپ میرجاوه
گزارش یک جنگ
play_arrow
گزارش یک جنگ
مسئول رسانه‌ای حزب‌الله: سیدحسن نصرالله در محل حمله نبوده و در سلامت است
play_arrow
مسئول رسانه‌ای حزب‌الله: سیدحسن نصرالله در محل حمله نبوده و در سلامت است
وحیدی، فرمانده پیشین نیروی قدس سپاه در شبکه خبر: هر فرمانده‌ای شهید می‌شود فرمانده‌ای دیگر به میدان می‌آید
play_arrow
وحیدی، فرمانده پیشین نیروی قدس سپاه در شبکه خبر: هر فرمانده‌ای شهید می‌شود فرمانده‌ای دیگر به میدان می‌آید