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

Farzad Sarseifi
توسط Farzad Sarseifi در آموزش برنامه نویسی اندروید,
دسترسی و ساماندهی منابع اندروید 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 /  به ما ارائه می‌دهد. شاخه          نوع منبع 1- anim/          فایل‌های XML که ویژگی انیمیشن‌ها را مشخص می‌کنند در پوشه /res/anim ذخیره شده هستند و در رده R.anim  قابلیت دسترسی دارند.  2- color/          فایل‌های XML که وضعیت رنگ‌ها را مشخص می‌کنند در پوشه res/ color ذخیره شده هستند و در رده R.color قابلیت دسترسی دارند.  3- drawable/    فایل‌های تصویری مانند png, .jpg, .gif یا فایل‌های XML که در بیت‌مپ‌ها جمع شده‌اند، لیست‌ها، شکل‌ها و قابلیت ترسیم انیمیشن را بیان می‌کنند. آنها در پوشه res/drawable/ ذخیره شده‌اند و و در رده R.drawable قابلیت دسترسی دارند. 4- layout/        فایل‌های XML که میانجی صفحه‌آرایی یک کاربر را مشخص می‌کنند، در پوشه res/layout/ ذخیره هستند و از طریق دسته R.layout قابلیت دسترسی دارند. 5- menu/        فایل‌های XML از قبیل منوی گزینه‌ها، منوی متن یا منو فرعی که منوهای نرم‌افزار را مشخص می‌کنند در پوشه در پوشه res/menu/  ذخیره هستند و از طریق دسته R.menu قابلیت دسترسی دارند. 6- raw/          فایل‌های دلخواه برای ذخیره در شکل خام آنها. شما برای باز کردن چنین فایل‌های خامی به فراخوانی Resources.openRawResource() با هویت منبع، که R.raw.filename است، احتیاج دارید. 7- 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. 8- 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!  را توضیح داده‌ام، یکبار دیگر مرور کنید مطمئن هستم تمام مفاهیم توضیح داده شده در این فصل را بهتر خواهید فهمید. بنابراین، من توصیه اکید می‌کنم فصل قبل را برای کار کردن مثال و درک چگونگی استفاده من از منابع مختلف در سطح خیلی ابتدایی بررسی کنید.
  • 0 پاسخ