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

دسترسی به منابع آندروید

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

آیتم های بسیاری وجود دارند که شما برای ساخت یک برنامه آندرویدی خوب از آنها استفاده می کنید. به غیر از برنامه نویسی برای اپلیکشن ها، به منابع مختلف دیگری مانند محتوای استاتیک که در کد استفاده می کنید، نیاز داریم.  مانند bitmap ها، رنگ ها، تعاریف طرح، رابط کاربر، دستورالعمل انیمیشن، و غیره. این منابع همیشه به طور جداگانه در زیر فولدر های مختلف در فولدر res/ پروژه نگهداری می شوند.

این آموزش به شما توضیح می دهد که چگونه می توانید منابع برنامه خود را سازماندهی کنید، منابع جایگزین را مشخص کنید و در برنامه های خود به آنها دسترسی پیدا کنید.

سازماندهی منابع درeclipse

شما باید هر نوع از منابع را در یک دایرکتوری فرعی خاص در دایرکتوری /  res پروژه خود قرار دهید. به عنوان مثال، در اینجا سلسله مراتب فایل ها برای یک پروژه ساده آورده شده است:

MyProject/ src/ MyActivity.java res/ drawable/ icon.png layout/ activity_main.xml info.xml values/ strings.xml

دایرکتوری / res شامل تمام منابع در زیر دایرکتوری های مختلف است. در اینجا ما یک منبع تصویر، دو منبع  layout، و یک فایل منبع string داریم. در جدول زیر جزئیاتی در مورد دایرکتوری منابع پشتیبانی شده در دایرکتوری / res پروژه آورده شده است.

سازماندهی منابع در Android Studio

MyProject/ src/ main/ java/ MyActivity.java res/ drawable/ icon.png layout/ activity_main.xml info.xml values/ strings.xml
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 ها برای انوع های مختلف منابع بررسی کنید.

منابع جایگزین مربوطه را در این دایرکتوری جدید ذخیره کنید. فایل های منبع باید دقیقا مشابه با فایل های منبع پیش فرض نامگذاری شوند همان گونه که در زیر نشان داده شده است، اما این فایل ها محتوای ویژه ای برای جایگزین دارند. به عنوان مثال اگر نام فایل تصویر همان باشد اما برای صفحه نمایش با وضوح بالا، رزولوشن آن بالا خواهد بود.

مثال زیر تصاویر را برای یک صفحه نمایش پیش فرض و تصاویر جایگزین برای صفحه نمایش با وضوح بالا مشخص می کند.

MyProject/ src/ main/ 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 جایگزین برای زبان عربی را مشخص می کند.

 

MyProject/ src/ main/ 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

دسترسی به منابع

در طول توسعه اپلیکشن خود شما نیاز به دسترسی به منابع تعریف شده در کد خود ، و یا در فایل های  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 تعریف زیر را دارد:

Hello, World!

حال شما می توانید متنی را بر روی شی 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! توضیح داده شد برگردید، من مطمئن هستم که مفاهیمی که در آن توضیح داده شد را بهتر درک خواهید کرد. بنابراین توصیه می کنم مفاهیم جلسه قبل را بررسی کنید که چگونه از منابع مختلف در سطح بسیار ابتدایی استفاده کرده ایم.

برچسب ها

ممکن است به این موارد نیز علاقه مند باشید:

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

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

کد امنیتی را در کادر زیر بنویسید *