مشخصات مقاله
-
3292
-
0.0
-
13159
-
0
-
1
آموزش Resource در اندروید
سازماندهی و دسترسی به منابع اندروید
آیتم های بسیار بیشتری وجود دارند که شما می توانید برای ساخت یک اپلیکیشن اندرویدی خوب از آنها استفاده کنید. صرف نظر از کد نویسی اپلیکیشن، شما باید به منابع مختلف دیگر مانند محتوای ایستایی که کد شما از آن استفاده میکند، مانند تصاویر(نقشه بیتی)، رنگ ها، تعاریف صفحه بندی، رشته های واسط کاربری، دستورات مربوط به انیمیشن و موارد دیگر، توجه کنید. این منابع همیشه به صورت جداگانه در دایرکتوری های فرعی مربوط به دایرکتوری res/ نگهداری می شوند.
این خود آموز توضیح میدهد که شما چگونه می توانید منابع اپلیکیشن خود را سازماندهی کنید، منابع جایگزین را مشخص کنید و در اپلیکیشن خود به آنها دسترسی پیدا کنید.
سازماندهی منابع
شما باید هر نوع منبع را در یک دایرکتوری فرعی خاص از دایرکتوری res/ پروژهی خود قرار دهید. برای مثال، در اینجا یک سلسله مراتبِ فایل برای یک پروژه ساده ارائه شده است.
MyProject/
src/
MyActivity.java
res/
drawable/
icon.png
layout/
activity_main.xml
info.xml
values/
strings.xml
دایرکتوری res/ شامل همه ی منابع موجود در دایرکتوری های فرعی مختلف است. در اینجا ما یک فایل منبع تصویر، دو فایل منبع صفحه بندی و یک فایل منبع رشته داریم. جدول زیر جزئیاتی را در مورد دایرکتوری های منابع پشتیبانی شده در دایرکتوری res/ پروژه ارائه می دهد.
منابع جایگزین
اپلیکیشن شما باید منابع جایگزینی را برای پشتیبانی از تنظیمات خاص دستگاه فراهم کند. برای مثال، شما باید منابع کشیدنی جایگزین (یعنی تصاویر) را برای وضوح تصویرهای مختلف (رزولوشن های تصویر مختلف) و منابع رشته ای جایگزین را برای زبان های مختلف در نظر بگیرید. در زمان اجرا، اندروید تنظیمات فعلی دستگاه را تشخیص می دهد و منابع مناسب را برای اپلیکیشن شما بارگذاری می کند.
برای تعیین جایگزین هایی با تنظیمات خاص برای مجموعه ای از منابع، مراحل زیر را دنبال کنید.
یک دایرکتوری جدید در res/ named به صورت ایجاد کنید. در اینجا resources_name می تواند هر کدام از منابع مطرح شده در جدول بالا مانند layout، drawable و غیره باشد. qualifier (توصیف کننده) یک پیکر بندی منحصر به فرد را مشخص می کند که این منابع در آن استفاده می شوند. شما می توانید اسناد رسمی را برای لیست کاملی از توصیف گرهای مربوط به انواع مختلف منابع، بررسی کنید.
منابع جایگزین مربوط را در این دایرکتوری جدید ذخیره کنید. همان طور که در مثال زیر نشان داده شده است، نام فایل های منابع باید دقیقا همان نام فایل های منبع پیش فرض باشد ولی محتوای این فایل ها وابسته به منبع جایگزین است. برای مثال، با وجود اینکه، نام فایل تصویر همان نام قبلی، ولی برای صفحه ای با رزولوشن بالاست، رزولوشن تصویر بالا خواهد بود.
در ادامه مثالی آمده است که تصاویر را برای یک صفحه نمایش پیش فرض و تصاویر جایگزین را برای صفحاتی با رزولوشن بالا تعیین می کند.
MyProject/
src/
MyActivity.java
res/
drawable/
icon.png
background.png
drawable-hdpi/
icon.png
background.png
layout/
activity_main.xml
info.xml
values/
strings.xml
در ادامه مثال دیگری آمده است که، صفحه بندی (layout) را برای یک زبان پیش فرض و صفحه بندی جایگزین را برای زبان عربی مشخص می کند.
MyProject/
src/
MyActivity.java
res/
drawable/
icon.png
background.png
drawable-hdpi/
icon.png
background.png
layout/
activity_main.xml
info.xml
layout-ar/
main.xml
values/
strings.xml
دسترسی به منابع
شما در طول توسعه اپلیکشن خود نیازمند دسترسی به منابع تعریف شده در کد خود یا در فایل های XML صفحه بندی خود هستید. بخش زیر شرح می دهد که شما چگونه می توانید به منابع خود در هر دو سناریو دسترسی پیدا کنید.
دسترسی به منابع در کد
زمانیکه اپلیکیشن اندروید شما، کامپایل میشود، یک کلاس R (R class) تولید میشود که شامل شناسه های منابع برای تمام منابع موجود در دایرکتوری res/ شماست. شما می توانید با استفاده از نام دایرکتوری فرعی و منبع و یا شناسه منبع مستقیم، از کلاس R، برای دسترسی به این منابع استفاده کنید.
مثال:
رای دسترسی به res/drawable/myimage.png و تنظیم یک ImageView شما از کد زیر استفاده می کنید.
TextView msgTextView = (TextView) findViewById(R.id.msg);
msgTextView.setText(R.string.hello);
در اینجا اولین خط کد، از R.id.myimageview برای گرفتن ImageView تعریف شده با شناسه ی myimageview در یک فایل صفحه بندی استفاده می کند. دومین خط کد از R.drawable.myimage برای گرفتن یک تصویر با نام myimage که در دایرکتوری فرعی drawable، تحت دایرکتوری /res قرار دارد، به کار می رود.
مثال:
مثال بعدی را در نظر بگیرید که در آن res/values/strings.xml دارای تعریف زیر است.
Hello, World!
اکنون شما می توانید، متن را بر روی یک شی TextView با شناسه ی msgID msg، با استفاده از یک شناسه منبع به صورت زیر تنظیم کنید.
TextView msgTextView = (TextView) findViewById(R.id.msg);
msgTextView.setText(R.string.hello);
مثال:
یک صفحه بندی res/layout/activity_main.xml را با تعریف زیر در نظر بگیرید.
این کد اپلیکیشن، این صفحه بندی را برای یک فعالیت، در متد onCreate() به صورت زیر بارگذاری می کند.
onCreate(Bundle savedInstanceState)
{
public void
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
}
دسترسی به منابع در XML
فایل منبع XML، res/values/strings.xml که شامل یک منبع رنگ و یک منبع رشته است.
#f00
Hello!
اکنون شما می توانید از این منابع در فایل صفحه بندی زیر برای تنظیم رنگ متن و رشته ی متنی به صورت زیر استفاده کنید.
اکنون اگر شما بار دیگر به فصل قبل برگردید که من مثال Hello World! را شرح دادم، مطمئن هستم که شما درک بهتری از تمام مفاهیم شرح داده شده در این فصل خواهید داشت. بنابراین، من به شدت توصیه می کنم که فصل قبل را به عنوان مثال عملی بررسی کنید و ببینید که چگونه از منابع مختلف در سطح بسیار ابتدایی استفاده شده است.