با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن . و کاربرانی که دوره کامل آموزش برنامه نویسی اندروید را دنبال می کنند. موارد بسیار زیادی وجود دارد که شما برای ساخت یک برنامه خوب اندروید از آن استفاده می کنید. به غیر از برنامه نویسی برای برنامه، شما به منابع مختلف دیگری همچون محتوای استاتیک که کد شما از آن استفاده می کند، نیاز دارید. که از جمله می توان به bitmaps ها، رنگ ها، تعاریف طرح، رشته های رابط کاربری، دستورالعمل های انیمیشن و…اشاره کرد. این منابع همیشه در زیر شاخه های مختلف تحت res/ directory به طور جداگانه نگهداری می شوند. برای درک بهتر و آشنایی با سازماندهی منابع در اندروید استدیو در ادامه ی مباحث این بخش با ما همراه باشید.
در ادامه ی این آموزش چگونگی سازماندهی منابع در اندروید استدیو ، جایگزینی منابع و دسترسی به آن آشنا می شوید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | MyProject/ app/ manifest/ AndroidManifest.xml java/ MyActivity.java res/ drawable/ icon.png layout/ activity_main.xml info.xml values/ strings.xml |
ردیف | دایرکتوری و نوع منبع |
---|---|
۱ | anim/ فایل های XML که انیمیشن های خاص را تعریف می کنند.در مسیر res / anim / folder ذخیره شده و از کلاس R.anim قابل دسترسی هستند. |
۲ | color/ فایل های XML که لیستی از رنگ های وضعیتی را تعریف می کند. در مسیر res / color ذخیره شده و از کلاس R.color قابل دسترسی هستند. |
۳ | drawable/ فایل های تصویر مانند .png، .jpg، .gif یا فایل های XML که در بیت مپ کامپایل می شوند، لیست های وضعیتی، اشکال و انیمیشن منعطف است. |
۴ | layout/ فایل های XML که یک طرح رابط کاربری را تعریف می کند. در مسیر res / layout ذخیره شده و از کلاس R.layout قابل دسترسی هستند. |
۵ | menu/ فایل های XML که منوهای برنامه را تعریف می کند، مانند منوی تنظیمات، منوی زمینه یا Sub Menu، در مسیر res / menu / ذخیره می شوند و از کلاس R.menu قابل دسترسی هستند.
|
۶ | raw/ برای ذخیره ی فایل های دلخواه در فرم خام شما نیاز به فراخوانی متد () Resources.openRawResource با id منبع دارید. که R.raw.filename برای باز کردن چنین فایل هایی کاربرد دارد.
|
۷ | values/فایل های XML که حاوی مقادیر ساده مانند رشته ها، عدد صحیح و رنگ است. به عنوان مثال، در اینجا به برخی از توافقنامه های نام فایل برای منابع شما اشاره شده است:
|
۸ | xml/ فایل های دلخواه XML که می توانند در زمان اجرا با خواندن () Resources.getXML خوانده شوند. |
برنامه ی اندروید شما باید شامل منابع جایگزین برای پشتیبانی از تنظیمات خاص دستگاه باشد.
به عنوان مثال، شما باید منابع مجاز دیگری را برای وضوح صفحه نمایش و همچنین منابع رشته جایگزین برای زبان های مختلف معرفی کنید.
در زمان اجرا، اندروید پیکربندی دستگاه فعلی را تشخیص داده و منابع مناسب را برای برنامه شما بارگذاری می کند.
برای تعیین گزینه های خاص پیکربندی برای مجموعه ای از منابع، مراحل زیر را دنبال کنید:
۱- ابتدا باید یک دایرکتوری جدید در res/ named در فرم <resource_name> – <config_qualifier> ایجاد کنید، که نام منبع خواهد بود.
resources_name برای هر یک از منابع ذکر شده در جدول فوق از جمله طرح، drawable و … اعمال می شود.
۲- منابع جایگزین مربوطه را در این دایرکتوری جدید ذخیره کنید. فایل های منبع باید دقیقا همانند فایل های منبع پیش فرض همانطور که در مثال زیر نشان داده شده نامگذاری شود.
اما این فایل ها دارای محتوای خاصی برای جایگزین هستند، به عنوان مثال اگرچه نام فایل های تصویری یکسان است اما برای صفحه نمایش ها مختلف فرق می کند.
مثال زیر تصویر پیش فرض را برای صفحه نمایش و تصویر جایگزین آن را برای رزولوشن بالا نیز نشان می دهد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | MyProject/ app/ manifest/ AndroidManifest.xml java/ MyActivity.java res/ drawable/ icon.png background.png drawable-hdpi/ icon.png background.png layout/ activity_main.xml info.xml values/ strings.xml |
در زیر یک مثال دیگر است که طرح بندی برای یک زبان پیش فرض و طرح جایگزین برای زبان عربی را مشخص می کند:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | MyProject/ app/ manifest/ AndroidManifest.xml 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 خواهید داشت.
که در ادامه ی این بخش دو روش دسترسی به منابع برنامه را بررسی خواهیم کرد:
هنگامی که برنامه Android شما کامپایل می شود، یک کلاس R ایجاد می شود.
کلاس R دارای شناسه منابع برای تمام منابع موجود در res / directory شما است.
شما می توانید از کلاس R برای دسترسی به این منابع با استفاده از زیر شاخه و نام منابع یا مستقیما ID استفاده کنید.
برای دسترسی به res/drawable/myimage.png و تنظیم ImageView می توانید از کد زیر استفاده کنید:
1 2 | ImageView imageView = (ImageView) findViewById(R.id.myimageview); imageView.setImageResource(R.drawable.myimage); |
خط اول کد استفاده از R.id.myimageview برای گرفتن ImageView با id myimageview در یک پرونده Layout تعریف شده است.
خط دوم کد از R.drawable.myimage استفاده می کند تا یک تصویر با نام myimage در sub-directory drawable زیر / res در دسترس داشته باشد.
این مثال که دارای res / values / stringings.xml است ، بصورت زیر است:
1 2 3 4 | <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello, World!</string> </resources> |
حالا شما می توانید متن را در یک شی TextView با شناسه msg با استفاده از شناسه منبع به صورت زیر تنظیم کنید:
1 2 | TextView msgTextView = (TextView) findViewById(R.id.msg); msgTextView.setText(R.string.hello); |
یک طرح در res/layout/activity_main.xml را در نظر بگیرد ، کد آن به صورت زیر است:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?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 به صورت زیر بارگذاری می کند:
1 2 3 4 | public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } |
فایل XML res / values / strings.xml زیر را که شامل یک منبع رنگی و یک منبع رشته است را در نظر بگیرید:
1 2 3 4 5 | <?xml version="1.0" encoding="utf-8"?> <resources> <color name="opaque_red">#f00</color> <string name="hello">Hello!</string> </resources> |
اکنون می توانید از این منابع در فایل طرح بندی زیر استفاده کنید تا رنگ متن و رشته متن را به صورت زیر تنظیم کنید:
1 2 3 4 5 6 | <?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! که در بخش قبلی ارائه کردیم برای تمرین، منابع جایگزین تعریف کرده و آن را کاملتر کنید.
از آن جایی که برنامه های تولید شده ی اندروید در دستگاه های مختلف با تنظیمات متفاوت اجرا می شوند، باید با تنظیمات مختلف سازگاری داشته باشند که برای اینکار نیاز به تعریف منابع جایگزین در برنامه دارید که ما در این بخش چگونگی سازماندهی منابع در اندروید استدیو ( Resource در اندروید ) را ارائه کردیم.