no-img
سامنتا

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


سامنتا
دانلودهای ویژه
اطلاعیه های سایت

ادامه مطلب

سازماندهی و دسترسی منابع اندروید
zip
اردیبهشت ۱۷, ۱۳۹۵

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


فایل ویدیویی این آموزش بصورت فارسی و با کیفیت بالا اضافه شد میتوانید از زیر بخرید : 

۵,۰۰۰ تومان – خرید

در برنامه نویسی اندروید روش های گوناگونی برای خلق نتیجه ی نهایی در اختیار برنامه نویسان وجود دارد . جدای از کدنویسی شما باید از یک سری منابع ثابت نیز استفاده کنید . منابعی مانند تصاویر ، رنگ ها ، تعاریف لایه ها ، رشته های نمایشی ، مقادیر انیمیشن ها و خیلی بیشتر … .

این منابع همیشه در یک دایرکتوری جداگانه به اسم res/  نگه داری میشوند . 

در این مقاله قصد داریم نحوه ی سازماندهی منابع و نحوه ی استفاده آنها را بیان کنیم .

سازماندهی منابع در  محیط Eclipse 

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

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

دایرکتوری res شامل تمام منابع اندروید میباشد که در زیرگروه های خود نگهداری میکند . اینجا ما یک دایرکتوری برای منابع تصاویر ، دو عدد فایل لایه ای (layout) ، یک منبع رشته ای (strings.xml) داریم .

در جدول زیر جزئیات بیشتری در مورد منابع اندروید و پوشه ها و زیر پوشه های آن مشاهده میکند : 

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

 

نوع منابع دارکتوری
anim/منابعی از نوع xml هستند که ویژگی های انیمیشن ها در اندروید را نگهداری میکنند ، این فایل ها درون دایرکتوری res/anim/ ذخیره میشوند و از طریق دستور  R.anim  قابل دسترسی هستند
color/منابعی از نوع xml هستند که اسم رنگ ها و مقدار هگزای آنها را نگهداری میکنند به لیست این فایل ها نیز میتوان از طریق کلاس R.color دسترسی داشت فایل این منابع درون پوشه ی res/color/ ذخیره میشود
drawable/

فایل های تصویری مانند .jps و .gif و .png یا فایل های xml که تبدیل به Bitmap , shape , animation , state list میشوند . 

این منابع در دایرکتوری res/drawable/ ذخیره میشوند و از طریق کلاس R.drawable قابل دسترسی هستند .

layout/منابعی که رابط های کاربری را فراهم میکنند . این منابع در دایرکتوری res/layout/ ذخیره میشوند و از طریق R.layout  قابل دسترسی هستند . 
menu/

منابعی از نوع فایل های xml که منوی های برنامه را تعریف میکنند . منوهایی مانند Options Menu, Context Menu, یا Sub Menu

این منابع در پوشه ی res/menu/  ذخیره میشوند و از طریق کلاس R.menu قابل دسترسی هستند.

raw/

منابع فایل های خام که هیچ گونه دستکاری روی آنها انجام نمیگیرد و فقط فراخوانی میشوند . شما بایستی Resources.openRawResource() را با همراه ایدی منبع خود صدا بزنید که فایل R.raw.filename خوانده شود . 

values/

منبعی از نوع فایل های xml برای نگهداری مقادیر ساده مانند : رشته های متنی ، اعداد صحیح ، رنگ ها .برای مثال در زیر تعداد نام برای فایل های چنین منابعی بصورت قراردادی آمده است : 

  • arrays.xml برای نگهداری مقادیر آرایه ها که از طریق R.array  قابل دسترسی هست 
  • integers.xml برای منابع اعداد صحیح که از طریق R.integer قابل دسترسی هست 
  • bools.xml براای مقادیر بولین (boolean) که از طریق R.bool  قابل دسترسی هست 
  • colors.xml برای منابع تعریف رنگها که از طریق R.color  قابل دسترسی هست 
  • dimens.xml برای منابع تعریف ابعاد که از طریق R.dimen قابل دسترسی هست 
  • strings.xml برای منابع رشته ای از حروف میباشد که از طریق R.string قابل دسترسی هست 
  • styles.xml برای استایل دهی ها که از طریق R.style قابل دسترسی هست 
xml/منابعی از فایل های XML دلخواه میباشد که با استفاده از Resources.getXML() میتوان مقادیر آنها را فراخوانی کرد ، شما میتوانید پیکربندی های مورد نیاز در آینده را به همین روش و در همین منبع ذخیره سازی کنید 

منابع جایگزین در برنامه نویسی اندروید 

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

هنگام اجرای برنامه ، اندروید تنظیمات کنونی اندروید را بازبینی میکند و منابع برنامه ای که نوشته ایم را منطبق بر تنظیمات خاص آن دستگاه تطبیق میدهد . 

برای اینکه بتوانید منابع ، منطبق بر دستگاه های گوناگون اندروید درست کنید مراحل زیر را طی کنید : 

  • دایرکتوری جدیدی داخل پوشه ی res بسازید به شکل <resources_name>-<config_qualifier>
    در این جا resources_name نام منبعی هست که قصد دارید برای آن دایرکتوری بسازید مانند layout و drawable و … 
    qualifier  پیکربندی متناسب برای دستگاه های گوناگون هست مانند hdpi برای دستگاه های با رزولیشن بالا .  برای اطلاعات بیشتر شما باید مقالات خود گوگل در مورد استفاده از کیفیت ها و رزولیشن های گوناگون را مطالعه کنید . زیر این مباحث خارج از محدوده ی بحث ماست 
  • منابع خود را بسته به انواع دستگاه های اندرویدی که قرار است برنامه ی شما روی آن نصب بشود داخل این پوشه ها کپی کنید . نام فایل هایی که درون این دایرکتوری ها قرار میگیرد حتما باید یکی باشد . مثلا یک فایل با رزولیشن های متفاوت تصویری به اسم example.jpg داریم باید در تمام پوشه های مختلف برای رزولیشن های مختلف ، نام یکسانی باشد 

در زیر یک مثال با این رابطه آورده ایم که در آن تصویری را برای منبع تصاویر drawable پیشفرض و همچنین برای زرولیشن های hight بصورت جداگانه آورده ایم :

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 

و همچنین در زیر مثالی برای منبع رشته ای آورده ایم که یک منبع بصورت پیشفرض و یک منبع برای زبان arabic در نظر گرفته ایم : 

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 

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

در طول توسعه ی برنامه ی اندرویدی شما نیاز دارید به منابعی که قبلا ساخته اید دسترسی داشته باشید و از آنها در کدنویسی های جاوایی خود یا درون فایل های xml استفاده کنید . 

در مثال زیر  در دو سناریو ، نشان میدهیم که چگونه به این منابع دسترسی داشته باشید . 

دسترسی به منابع از طریق کد در برنامه نویسی اندروید 

زمانی که برنامه ی اندرویدی شما کامپایل میشود یک فایل کلاس با عنوان R تولید میشود که شامل آیدی های دسترسی به تمام منابع درون دایرکتوری res هست و  میتوانید از طریق این فایل به آنها دسترسی داشته باشید . 

مثال :

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

ImageView imageView = (ImageView) findViewById(R.id.myimageview);
imageView.setImageResource(R.drawable.myimage);

در کد بالا در خط اول قسمت R.id.myimageview  از داخل فایل کلاس R آیدی ImageView که  myimageview را فراخوانی میکند . و در خط بعدی تصویری با نام myimage که در داخل منابع برنامه درون پوشه ی res قرار دارد را فراخوانی میکند تا در ImageView تعریف شده به نمایش گذاشته شود . 

مثال : 

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

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

سپس میتوانید یک TextView برای نمایش اطلاعات تعریف کنید تا محتویاتش را از منبع string فراخوانی کند : 

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 بالا را برای یک اکتیویتی داخل متد onCreate()  فراخوانی میکند : 

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_activity);
}

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

منبع زیر را در نظر بگیرید که در مسیر res/values/strings.xml قرار دارد که شامل یک مقدار color و یک مقدار رشته ای string هست : 

<?xml version="1.0" encoding="utf-8"?>
<resources> <color name="opaque_red">#f00</color> <string name="hello">Hello!</string>
</resources>

حال شما میتوانید از این منابع داخل فایل های XML خود نیز استفاده کنید به کدهای زیر دقت کنید که چگونه رنگ و رشته ی متنی را به EditText اعمال کردیم : 

<?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 در اندروید ) مطمئن هستم که تمام آموزش ها و نوشته های بالا را بخوبی درک خواهید کرد . بنابراین اگر هنوز آموزش گذشته را مطالعه نکردید دعوت میکنم که ابتدا آموزش قبلی را مطالعه فرمائید 

آموزش قبلی :  پروژه ی hello world در اندروید 

 




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

تیم سامنتا 75 نوشته در سامنتا دارد . مشاهده تمام نوشته های

دیدگاه ها


پاسخ دهید

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