سازماندهی و دسترسی به منابع اندروید
موارد بسیار زیادی وجود دارد که شما برای ساخت یک برنامه خوب اندرویدی استفاده می کنید. پس می توانید از مکانیزمی به منظور دسترسی راحت تر به آن ها استفاده کنید. داده های مورد استفاده در ساخت برنامه های اندرویدی مانند محتوای استاتیک، رنگ ها، رشته ها و غیره. این منابع همیشه به طور جداگانه در زیر شاخه های مختلف شاخه res/ پروژه نگهداری می شوند.
این آموزش به شما توضیح می دهد که چگونه می توانید منابع برنامه خود را در نرم افزار اندروید استودیو سازماندهی کنید، منابع جایگزین را مشخص کرده و به برنامه های خود دسترسی داشته باشید.
سازماندهی منابع در اندروید استودیو
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | MyProject/ app/ manifest/ AndroidManifest.xml java/ MyActivity.java res/ drawable/ icon.png layout/ activity_main.xml info.xml values/ strings.xml |
ردیف | دایرکتوری و نوع منابع |
1 | anim/ فایل های XML که انیمیشن های مورد استفاده در رابط کاربری برنامه را مشخص می کنند. آن ها در پوشه res/anim/ ذخیره می شوند و از طریق کلاس R.anim قابل دسترسی هستند. |
2 | color/ فایل های XML که رنگ های مورد استفاده در رابط کاربری برنامه را تعریف می کنند. آن ها در پوشه /res/color ذخیره می شوند و از طریق کلاس R.color قابل دسترسی هستند. |
3 | drawable/ کل منابع قابل ترسیم (مانند .png، .jpg، .gif) مورد استفاده در برنامه در این مسیر قرار می گیرند و از کلاس R.drawable قابل دسترسی هستند. |
4 | layout/ فایل های مربوط به طرح بندی و چیدمان رابط کاربری برنامه در این مسیر قرار می گیرند و از کلاس R.layout قابل دسترسی هستند. |
5 | menu/ فایل های XML که منوی برنامه را تعریف می کنند، مانند منوی تنظیمات، زیر منو و غیره. این فایل ها در مسیر res/menu/ قرار می گیرند و از کلاس R.menu قابل دسترسی هستند. |
6 | raw/ فایل های اختیاری که در ساخت برنامه اندرویدی از آن ها استفاده می شود در مسیر res/raw/ قرار می گیرند و از کلاس R.raw قابل دسترسی هستند. |
7 | values/ فایل های XML که حاوی مقادیر ساده مانند رشته ها، عدد صحیح و رنگ هستند. در فهرست زیر برخی از قرار داد هایی که برای نام گذاری این فایل ها می توانید استفاده کنید را مشاهده می کنید: · arrays.xml : برای تعریف آرایه ها، دسترسی از کلاس R.array. · integers.xml : برای تعریف اعداد صحیح، دسترسی از کلاس R.integer. · bools.xml : برای تعریف مقادیر boolean، دسترسی از کلاس R.bool. · colors.xml : برای تعریف رنگ ها، دسترسی از کلاس R.color. · dimens.xml : برای تعریف ابعاد، دسترسی از کلاس R.dimens. · strings.xml : برای تعریف مقادیر رشته ایی، دسترسی از کلاس R.string. · styles.xml : برای تعریف استایل ها، دسترسی از کلاس R.style. |
8 | xml/ فایل های XML که موقع اجرای برنامه با استفاده از متد Resources.getXML() می توانیم به آن ها دسترسی داشته باشیم. شما می توانید فایل های پیکربندی مختلف را در اینجا ذخیره کنید تا در زمان اجرا از آن ها استفاده کنید. |
منابع جایگزین
برای این که برنامه اندرویدی شما در شرایط خاص هم بتواند نیاز کاربر را برطرف کند باید یکسری منابع جایگزین هم داشته باشد تا در مواقع لزوم از آن ها استفاده کند. برای مثال، شما می توانید تصاویری با سایز ها مختلف به عنوان منابع جایگزین برنامه خود در نظر بگیرید تا در دستگاه هایی با اندازه های متفاوت به درستی نمایش داده شوند. و یا می توانید برای زبان ها مختلف رشته های خاص تعریف کنید. در هنگام اجرا، اندروید پیکربندی دستگاهی که بر روی آن اجرا شده است را تشخص داده و از منابع متناسب با استفاده می کند.
به منظور ایجاد منابع جایگزین در برنامه خود، مراحل زیر را دنبال کنید:
- یک دایرکتوری جدید در مسیر res/ ایجاد کنید و نام آن را به شکل <resources_name>-<config_qualifier> بنویسید. در اینجا resource_name یکی از منابع ذکر شده در جدول (مثلا drawable) بالا خواهد بود. Qualifier یک پیکربندی فردی برای استفاده از منابع، خواهد بود.
- منابع جایگزین مربوطه را در این مسیر ذخیره کنید. نام گذاری فایل های منبع باید دقیقا مانند نام منابع پیش فرض باشد. فایل های جایگزین دارای محتوای خاصی برای جایگزین شدن هستند. برای مثال اگر چه نام هر دو فایل تصویری یکسان است اما رزولوشن آن ها متفاوت (برای نمایش در صفحه نمایش ها مختلف) است.
در مثال زیر، تصاویری برای صفحه نمایش پیش فرض و تصاویری جایگزین برای صفحه نمایشی با وضوح بالا در نظر گرفته شده است:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | MyProject/ app/ manifest/ AndroidManifest.xml java/ MyActivity.java res/ drawable/ icon.png background.png drawable-hdpi/ icon.png background.png layout/ activity_main.xml info.xml values/ strings.xml |
در مثال زیر، یک layout برای زبان پیش فرض و یک layout جایگزین برای زبان عربی مشخص شده است:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | MyProject/ app/ manifest/ AndroidManifest.xml java/ 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 ایجاد می شود که برای هر یک از منابع موجود در مسیر res/ شناسه ای خاص مشخص می کند. شما می توانید با استفاده از کلاس R به منابع خود درون مسیر res/ و زیر شاخه های آن دسترسی داشته باشید.
مثال
برای دسترسی به فایل موجود در مسیر res/drawable/myimage.png و تنظیم آن در یک کنترل ImageView به صورت زیر عمل کنید:
1 2 | ImageView imageView = (ImageView) findViewById(R.id.myimageview); imageView.setImageResource(R.drawable.myimage); |
در خط اول از کد R.id.myimageview به منظور گرفتن ImageView با شناسه myimageview که در یک فایل layout تعریف شده، استفاده شده است. خط دوم هم از کد R.drawable.myimage برای دسترسی به تصویری به نام myimage که در زیر شاخه drawable موجود در پوشه res/ قرار دارد، استفاده شده است.
مثال
در مثال بعدی ما res/values/strings.xml فایلی در مسیر با محتوای زیر داریم:
1 2 3 4 | <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello, World!</string> </resources> |
حالا می توانید با استفاد هاز شناسه منبع، متن را در یک شیء TextView با شناسه msg تنظیم کنید:
1 2 | TextView msgTextView = (TextView) findViewById(R.id.msg); msgTextView.setText(R.string.hello); |
مثال
Layout موجود در مسیر res/layout/activity_main.xml را با تعریف زیر در نظر بگیرید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, I am a TextView" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, I am a Button" /> </LinearLayout> |
سپس برای انتصاب آن به activity با استفاده از متد OnCreate() به صورت زیر عمل کنید:
1 2 3 4 | public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } |
دسترسی به منابع در فایل های XML
فایل منبع XML موجود در مسیرres/values/strings.xml را در نظر بگیرید که شامل یک منبع رنگی و یک منبع رشته است:
1 2 3 4 5 | <?xml version="1.0" encoding="utf-8"?> <resources> <color name="opaque_red">#f00</color> <string name="hello">Hello!</string> </resources> |
اکنون می توانید از این منابع در فایل layout زیر استفاده کنید تا رنگ متن و رشته را به صورت زیر تنظیم کنید:
1 2 3 4 5 6 | <?xml version="1.0" encoding="utf-8"?> <EditText xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:textColor="@color/opaque_red" android:text="@string/hello" /> |
هیچ نظری ثبت نشده است