صفحه اصلی / آموزش اندروید / آموزش برنامه نویسی اندروید / دسترسی و ساماندهی منابع اندروید

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

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

Android Resources Organizing & Accessing

آیتم‌های خیلی زیادی وجود دارند که شما برای ساختن یک نرم‌افزار خوب برای اندروید از آنها استفاده می‌کنید. شما به غیر از برنامه‌نویسی برای ساخت نرم‌افزار، منابع مختلف دیگر مانند محتوای استاتیک (ثابت)  از قبیل Bitmap ها، رنگ‌ها، تعاریف صفحه‌آرایی، سری ابزار تعاملی کنترل صفحه برای کاربر، آموزش‌های انیمیشن و خیلی از این قبیل که کدهای شما استفاده می‌کنند، در نظر می‌گیرید.

این منابع همیشه به صورت مجزا در زیرشاخه‌های گوناگونی  تحت عنوان شاخهres/  پروژه محفوظ هستند.

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

ساماندهی منابع ( Organize Resources )

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

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

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

شاخه          نوع منبع

۱- anim/          فایل‌های XML که ویژگی انیمیشن‌ها را مشخص می‌کنند در پوشه /res/anim ذخیره شده هستند و در رده R.anim  قابلیت دسترسی دارند.

۲- color/          فایل‌های XML که وضعیت رنگ‌ها را مشخص می‌کنند در پوشه res/ color ذخیره شده هستند و در رده R.color قابلیت دسترسی دارند.

۳- drawable/    فایل‌های تصویری مانند png, .jpg, .gif یا فایل‌های XML که در بیت‌مپ‌ها جمع شده‌اند، لیست‌ها، شکل‌ها و قابلیت ترسیم انیمیشن را بیان می‌کنند. آنها در

پوشه res/drawable/ ذخیره شده‌اند و و در رده R.drawable قابلیت دسترسی دارند.

۴- layout/        فایل‌های XML که میانجی صفحه‌آرایی یک کاربر را مشخص می‌کنند، در پوشه res/layout/ ذخیره هستند و از طریق دسته R.layout قابلیت دسترسی دارند.

۵- menu/        فایل‌های XML از قبیل منوی گزینه‌ها، منوی متن یا منو فرعی که منوهای نرم‌افزار را مشخص می‌کنند در پوشه در پوشه res/menu/  ذخیره هستند و از طریق دسته R.menu قابلیت دسترسی دارند.

۶- raw/          فایل‌های دلخواه برای ذخیره در شکل خام آنها. شما برای باز کردن چنین فایل‌های خامی به فراخوانی Resources.openRawResource() با هویت منبع، که 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() خوانده شوند. شما می‌توانید فایل‌های پیکربندی مختلفی را در اینجا ذخیره کنید که در زمان اجرا استفاده خواهند شد.

منابع جایگزین

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

برای مشخص کردن گزینه های پیکربندی خاص برای مجموعه‌ای از منابع، مراحل زیر را دنبال کنید:

•    یک شاخه جدید در res/ named در قالب – ایجاد کنید. در اینجا resources_name هر کدام از منابع ذکر شده در جدول بالا، مانند صفحه‌آرایی، قابل ترسیم و غیره خواهد بود. توصیف‌کننده (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

در زیر یک مثال دیگر که صفحه‌آرایی را برای زبان پیش فرض و صفحه‌آرایی جایگزین را برای زبان عربی مشخص می‌کند وجود دارد:

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 تولید می‌شود که شامل شناسه‌های منبع برای تمام منابع قابل دسترس در شاخه res/ شما است. شما می‌توانید از طبقه R برای دسترسی به منبعی که از زیرشاخه استفاده می‌کند و نام منبع یا به طور مستقیم شناسه منبع استفاده کنید.

مثال:

برای دسترسی به res/drawable/myimage.png و وارد کردن یک ImageView شما از کد زیر استفاده خواهید کرد:

ImageView imageView = (ImageView) findViewById(R.id.myimageview);

imageView.setImageResource(R.drawable.myimage);

 

در اینجا خط اول کد، از  R.id.myimageview استفاده می‌کند تا ImageView مشخص با شناسه myimageview در یک فایل صفحه‌آرایی به دست آورد. خط دوم کد، از R.drawable.myimage استفاده می‌کند تا یک تصویر با نام myimage که قابل دسترس در زیرشاخه قابل ترسیم زیر /res است به دست آورد.

مثال:

به مثال بعدی ، جایی که res/values/strings.xml تعریف زیر را دارد توجه کنید:

<?xml version="1.0" encoding="utf-8"?>
<resource>
  <string name="hello">Hello, World!</string>
  </resource>

اکنون شما می‌توانید متن را روی TextView مقصود با شناسه msg با استفاده از یک شناسه منبع، مانند زیر وارد کنید:

TextView msgTextView = (TextView) findViewById(R.id.msg);

msgTextView.setText(R.string.hello);

مثال:

یک صفحه‌آرایی res/layout/activity_main.xml با تعریف زیر در نظر بگیرید:

<?xml version="1.0" encoding="utf-8"?>

   android:layout_width="fill_parent"

   android:layout_height="fill_parent"

   android:orientation="vertical" >

   android:layout_width="wrap_content"

   android:layout_height="wrap_content"

   android:text="Hello, I am a TextView" />

   android:layout_width="wrap_content"

   android:layout_height="wrap_content"

   android:text="Hello, I am a Button" />

این کد نرم‌افزار این صفحه‌آرایی را برای یک فعالیت، در روش 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"?>
<resource>
  <string name="hello">Hello, World!</string>
  <color name="opaque_red">#00ffff</color>
  </resource>

 

 

اکنون شما می‌توانید این منابع را در فایل صفحه‌آرایی بعدی برای وارد کردن رنگ متن و رشته متن مانند زیر استفاده کنید:

<?xml version="1.0" encoding="utf-8"?>

    <TextView
	android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:textColor="@color/opaque_red"

    android:text="@string/hello" />

اکنون اگر شما فصل قبل،  جایی مثال که Hello World!  را توضیح داده‌ام، یکبار دیگر مرور کنید مطمئن هستم تمام مفاهیم توضیح داده شده در این فصل را بهتر خواهید فهمید. بنابراین، من توصیه اکید می‌کنم فصل قبل را برای کار کردن مثال و درک چگونگی استفاده من از منابع مختلف در سطح خیلی ابتدایی بررسی کنید.

 

درباره فرزاد سرسیفی

فرزاد سرسیفی هستم متولد شهرستان سقز،28 ساله. 6 سالی هستش که برنامه نویسی اندروید رو شروع کردم. قبل اندروید چندین سال برنامه نویسی سمت وب php کار کرده بودم و با اومدن اندروید و هیجانی اولیه که داشتم وب رو کنار گذاشتم و بطور متمرکز روی اندروید شدم. وقتی که برنامه نویسی اندروید رو شروع کردم مجبور شدم به تهران بیام. اینجا با تیم ها وشرکت های بزرگی همکاری کرده ام. با توجه به مشکلاتی که خودم در زمینه یادگیری اندروید داشتم، تصمیم گرفتم که تجربیاتم رو به اشتراک بزارم. ابتدا انجمن تخصصی برنامه نویس اندروید رو راه انداختم و سپس به تدریس برنامه نویسی اندروید پرداختم. نزدیک به چهار سال هست که تدریس می کنم. با آموزشگاه های معتبر از قبیل سماتک و آموزشگاه اندروید ایران همکاری دارم. همچنین به عنوان مشاور با سازمان های و موسسات بزرگ از قبیل بانک شهر، رجا و فناپ همکاری داشته ام.

مطالب مشابه

برنامه نویسی اندروید

ADB در اندروید

ADB مخفف عبارت ( Android Debug Bridge ) میباشد،که به عنوان پل ارتباطی برای مدیریت …

پاسخ دهید

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