آموزش برنامه نویسی اندروید – قسمت ششم – دسترسی به منابع اندروید

سازماندهی و دسترسی به منابع آندروید
آیتم های بسیاری وجود دارند که شما برای ساخت یک برنامه آندرویدی خوب از آنها استفاده می کنید. به غیر از برنامه نویسی برای اپلیکشن ها، به منابع مختلف دیگری مانند محتوای استاتیک که در کد استفاده می کنید، نیاز داریم. مانند bitmap ها، رنگ ها، تعاریف طرح، رابط کاربر، دستورالعمل انیمیشن، و غیره. این منابع همیشه به طور جداگانه در زیر فولدر های مختلف در فولدر res/ پروژه نگهداری می شوند.
این آموزش به شما توضیح می دهد که چگونه می توانید منابع برنامه خود را سازماندهی کنید، منابع جایگزین را مشخص کنید و در برنامه های خود به آنها دسترسی پیدا کنید.
سازماندهی منابع درeclipse
شما باید هر نوع از منابع را در یک دایرکتوری فرعی خاص در دایرکتوری / res پروژه خود قرار دهید. به عنوان مثال، در اینجا سلسله مراتب فایل ها برای یک پروژه ساده آورده شده است:
دایرکتوری / res شامل تمام منابع در زیر دایرکتوری های مختلف است. در اینجا ما یک منبع تصویر، دو منبع layout، و یک فایل منبع string داریم. در جدول زیر جزئیاتی در مورد دایرکتوری منابع پشتیبانی شده در دایرکتوری / res پروژه آورده شده است.
سازماندهی منابع در Android Studio
Directory | Resource Type |
anim/ | فایل های XML ای هستند که ویزگی انیمیشن ها را تعریف می کنند. این فایل ها در پوشه res/anim/ ذخیره می شوند واز طریق کلاس R.anim قابل دسترسی هستند. |
color/ | فایل های XML ای هستند که لیستی از رنگ تعریف می کنند. این فایل ها در res/color/ ذخیره شده اند و از طریق کلاس R.color قابل دسترسی هستند. |
drawable/ | فایل های تصویری مانند .png, .jpg, .gif یا فایل های XML هستند که به bitmaps, state lists, shapes, animation drawable تبدیل می شوند. آنها در res/drawable/ذخیره شده و از کلاس R.drawable قابل دسترسی هستند. |
layout/ | فایل های XML هستند که طرح رابط کاربر را تعریف می کنند. آنها در res/layout/ ذخیره شده و از کلاس R.layout قابل دسترسی هستند. |
menu/ | فایل های XML هستند که منوهای اپلیکیشن را تعریف می کنند، از جمله Options Menu, Context Menu, Sub Menu. آنها در res/menu/ ذخیره می شوند و از کلاس R.menu قابل دسترسی هستند. |
raw/ | فایل های دلخواه ای که در فرم اولیه خود ذخیره شده اند. شما بایستی Resources.openRawResource() با ID منبع فراخوانی کنید که فایل R.raw.filename برای باز کردن چنین فایل های خام و اولیه ای خوانده شود. |
values/ | فایل های XML ای که حاوی مقدار ساده، مانند رشته ها، اعداد صحیح، و رنگ ها هستند. به عنوان مثال، در زبر برخی از نام فایل های قراردادی برای منابع که شما می توانید در دایرکتوری ایجاد کنید آمده است –
arrays.xml برای منابع آرایه ، و قابل دسترسی از کلاس R.array
integers.xml برای منابع اعداد صحیح ، و قابل دسترسی از کلاس R.integer
bools.xml برای منابع بولی ، و قابل دسترسی از کلاس R.bool
colors.xml برای ارزش رنگ، و قابل دسترسی از کلاس R.color
dimens.xml برای مقادیر ابعاد، و قابل دسترسی از کلاس R.dimen
strings.xml را برای مقادیر رشته، و قابل دسترسی از کلاس R.string
styles.xml برای سبک و قابل دسترسی از کلاس R.style |
xml/ | فایل های XML دلخواهی هستند که می توانند در زمان اجرا با فراخوانی ()Resources.getXML خوانده شوند. شما می توانید فایل های مختلف پیکربندی را که در زمان اجرا استفاده می شوند، در این قسمت ذخیره کنید. |
منابع جایگزین (Alternative Resources)
برنامه شما باید منابع جایگزین برای پشتیبانی از پیکربندی هر دستگاهی فراهم کند. برای مثال، شما باید منابع ترسیم (drawable resources ) جایگزین (مانند images) برای صفحه نمایش با وضوح مختلف و منابع رشته ای جایگزین برای زبان های مختلف را در نظر گرفته و ایجاد کنید. در زمان اجرا، آندروید پیکربندی دستگاه را تشخیص می دهد و منابع مناسب برای اپلیکیشن را لود می کند.
برای مشخص کردن جایگزین تنظیمات خاص برای مجموعه ای از منابع، مراحل زیر را دنبال کنید –
یک دایرکتوری جدید در /res ایجاد کنید و به صورت <resources_name> – <config_qualifier> نام گذاری کنید. در اینجا resources_name هر یک از منابع ذکر شده در جدول فوق می تواند باشد، مانند layout، drawable و غیره. qualifier پیکربندی متناسب برای هر یک از این منابع را که مورد استفاده قرار گیرد را مشخص می کند. شما می توانید اسناد رسمی را برای یک لیست کامل از qualifiers ها برای انوع های مختلف منابع بررسی کنید.
منابع جایگزین مربوطه را در این دایرکتوری جدید ذخیره کنید. فایل های منبع باید دقیقا مشابه با فایل های منبع پیش فرض نامگذاری شوند همان گونه که در زیر نشان داده شده است، اما این فایل ها محتوای ویژه ای برای جایگزین دارند. به عنوان مثال اگر نام فایل تصویر همان باشد اما برای صفحه نمایش با وضوح بالا، رزولوشن آن بالا خواهد بود.
مثال زیر تصاویر را برای یک صفحه نمایش پیش فرض و تصاویر جایگزین برای صفحه نمایش با وضوح بالا مشخص می کند.
در زیر یک مثال دیگر است که layout را برای یک زبان پیش فرض و layout جایگزین برای زبان عربی را مشخص می کند.
دسترسی به منابع
در طول توسعه اپلیکشن خود شما نیاز به دسترسی به منابع تعریف شده در کد خود ، و یا در فایل های layout XMLخواهید داشت. بخش زیر نحوه دسترسی به منابع را در هر دو سناریو توضیح می دهد.
دسترسی به منابع در کد
هنگامی که اپلیکیشن آندروید خود را کامپایل می کنید، یک کلاس R تولید می شود، که شامل ID منابع برای تمام منابع موجود در دایرکتوری res/ است. شما می توانید از کلاس R برای دسترسی به این منابع با استفاده از زیر دایرکتوری و نام منبع یا به طور مستقیم از ID منابع استفاده کنید.
مثال:
برای دسترسی به res/drawable/myimage.png و تنظیم یک ImageView از کد زیر استفاده می کنیم:
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 تعریف زیر را دارد:
حال شما می توانید متنی را بر روی شی TextView با آی دی MSG با استفاده از یک ID منبع به شرح زیر تنظیم کنید:
TextView msgTextView = (TextView) findViewById(R.id.msg); msgTextView.setText(R.string.hello);
مثال:
بررسی layout به شکل res/layout/activity_main.xml با تعریف زیر:
<?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>
این کد اپلیکیشن، این layout را برای Activity در متد ()onCreate به شرح زیر بارگذاری می کند:
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); }
دسترسی به منابع در XML
منابع XML زیر فایل res/values/strings.xml که شامل یک منبع رنگ و یک منبع رشته است را در نظر بگیرید –
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="opaque_red">#f00</color> <string name="hello">Hello!</string> </resources>
حالا شما می توانید از این منابع در فایل layout زیر برای تنظیم رنگ متن و رشته متن به شرح زیر استفاده کنید:
<?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" />
اکنون اگر شما دوباره به مقاله قبلی جایی که مثال Hello World! توضیح داده شد برگردید، من مطمئن هستم که مفاهیمی که در آن توضیح داده شد را بهتر درک خواهید کرد. بنابراین توصیه می کنم مفاهیم جلسه قبل را بررسی کنید که چگونه از منابع مختلف در سطح بسیار ابتدایی استفاده کرده ایم.
برچسب ها آموزش اندرویدآموزش برنامه نویسی اندرویدبرنامه نویسی اندروید
- قبلی آموزش asp.net – قسمت سوم – چرخه حیات ASP.NET
- بعدی آموزش برنامه نویسی جاوا – قسمت هشتم – Character
خوب بود ممنون