آیتم های خیلی زیادی وجود دارند که شما برای ساختن یک نرم افزار خوب برای اندروید از آنها استفاده میکنید. خوب ما در قسمت چهارم می خواهیم راجب کدهایی که با محتوای استاتیک (ثابت) از قبیل Bitmap ها، رنگها، تعاریف صفحهآرایی، سری ابزار تعاملی کنترل صفحه برای کاربر، آموزش های انیمیشن سرکار دارد را توضیح دهیم.
بخش ۱ از ۳: سامندهی منابع:
۱شما باید هر نوع از منبع را در یک زیرشاخه خاص از شاخه res/ در پروژه خود قرار دهید. برای مثال کد زیر یک سلسله فایل برای یک پرژوه ساده می باشد.
MyProject/ src/ MyActivity.java res/ drawable/ icon.png layout/ activity_main.xml info.xml values/ strings.xml
- شاخه 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 در قالب <config_qualifier>- <resources_name> ایجاد کنید. در اینجا 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
بخش ۳ از ۳: دسترسی منابع:
۱هنگامی که نرمافزار آندروید شما ساخته شد، یک طبقه 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"?> <resources> <string name="hello">Hello, World!</string> </resources>
اکنون شما میتوانید متن را روی 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"?> <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>
این کد نرمافزار این صفحهآرایی را برای یک فعالیت، در روش onCreate() مانند زیر بارگذاری خواهد کرد:
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); }
به منبع فایل 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>
اکنون شما میتوانید این منابع را در فایل صفحهآرایی بعدی برای وارد کردن رنگ متن و رشته متن مانند زیر استفاده کنید:
<?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" />