بررسی کامل ریسورس ها (منابع) در زامارین – قسمت ۱


در این قسمت قصد داریم ریسورس ها و منابع برنامه اندرویدی در زامارین رو به صورت کامل و اجمالی بررسی کنیم در دو قسمت قبل به سطح api اندروید و راه اندازی اولین پروژه پرداختیم.
تمام برنامه های اندرویدی علاوه براینکه سورس کد را شامل میشوند ریسورس ها و منابع نیز دارند که شامل تصاویر، متن هاو…. هستند و اینها به همراه سورس کد به کامپایل کننده مونو برای اندروید فرستاده میشوند و فایل apk خروجی دریافت میشود.
نحوه دریافت خروجی apk
مزیت های استفاده از ریسورس:

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

همانطور که در تصویر بالا مشاهده می نمایید منابع اندروید  بر اساس نوع در یکی از زیر شاخه ها قرار می گیرید مثلا تصاویر در شاخه drawable و لایه ها در شاخه layout  قرار گرفته است .
هنگام ایجاد هر پروژه ۵ فایل  بصورت پیشفرض ساخته میشوند:
Icon.png : آیکون برنامه که در پوشه Drawable قرار دارد و متناسب با اندازه های صفحه زمینه چند نسخه از آن ساخته شده است
Main.axml : لایه ی اکتیویتی اصلی برنامه توجه کنید که اندروید از پسوند xml استفاده میکند اما زامارین اندروید از axml.
strings.xml: تمام متن های برنامه برای استفاده در زبانهای مختلف
Resource.Designer.cs : کد ساخته شده از ریسورس ها بصورت اتوماتیک برای استفاده در کدنویسی
AboutResources.txt : فایل توضیح ریسورس که قابل حذف است.
نحوه دسترسی به ریسورس ها در Xamarin
روش های مختلفی برای دسترسی به ریسورس ها موجود است :

روش کدنویسی
 روش xml

روش کدنویسی
نمونه ای از فایل Resources.Designer.Cs:
public partial class Resource
{
public partial class Attribute
{
}
public partial class Drawable {
public const int Icon = 0x7f020000 ;
}
public partial class Id
{
public const int Textview = 0x7f050000 ;
}
public partial class Layout
{
public const int Main = 0x7f030000 ;
}
public partial class String
{
public const int App_Name = 0x7f040001 ;
public const int Hello = 0x7f040000 ;
}
}

همانطور که میبینید یک id به هر ریسورس اختصاص داده شده است حال نحوه دسترسی به این صورت است.
@[ < PackageName > .] Resource . < ResourceType > . < ResourceName >
PackageName : این پارامتر اختیاری است و درصورت استفاده از ریسورس خود برنامه نیاز نیست و تنها درصورتی نیاز است که از ریسورس پکیج دیگری استفاده شود.
ResourceType : نوع ریسورس همانند Drawable و ……
ResourceName: نام ریسورس مثلا Icon و ……
برای مثال برای گرفتن مقدار ریسورس App_Name بصورت زیر عمل میکنیم
@ Resource .String.App_Name
روش xml
نمونه ای از فایل Main.axml
< ? xml version = "1.0" encoding = "utf-8" ? >
< LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
android:orientation = "vertical"
android:layout_width = "fill_parent"
android:layout_height = "fill_parent" >
< ImageView android:id = "@+id/myImage"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:src = "@drawable/icon" / >
< / LinearLayout >
حال نحوه دسترسی به این صورت است.
@[ < PackageName > :] < ResourceType > / < ResourceName >
PackageName : این پارامتر اختیاری است و درصورت استفاده از ریسورس خود برنامه نیاز نیست و تنها درصورتی نیاز است که از ریسورس پکیج دیگری استفاده شود.
ResourceType : نوع ریسورس همانند Drawable و ……
ResourceName: نام ریسورس مثلا Icon و ……
برای مثال برای گرفتن مقدار ریسورس App_Name بصورت زیر عمل میکنیم
@string/App_Name
در قسمت بعدی دسته بندی کامل ریسورس ها و سازگاری با زبانها و سایز اسکرین های مختلف را شرح خواهیم داد.
 




قسمت قبلی


فهرست تمامی قسمت ها


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