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

جلسه قبل جلسه بعد

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

سازماندهی منابع در Android Studio

MyProject/
   app/
      manifest/
         AndroidManifest.xml
   java/
      MyActivity.java  
      res/
         drawable/  
            icon.png  
         layout/  
            activity_main.xml
            info.xml
         values/  
            strings.xml 

1 anim/
پرونده های XML که انیمیشن های خاصیت را تعریف می کنند. آنها در پوشه res / anim / ذخیره می شوند و از کلاس R.anim به آنها دسترسی پیدا می شود.
2 color /
فایلهای XML که لیستی از رنگها را تعریف می کنند. آنها با رز / رنگ / ذخیره می شوند و از کلاس 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/
پرونده های خودسرانه برای ذخیره در فرم خام خود. برای باز کردن چنین پرونده های خام ، باید Resource.openRawResource () را با شناسه منبع که R.raw.filename است تماس بگیرید.
7 value /
پرونده های 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 قابل دسترسی است.
8 xml /
پرونده های XML خودسرانه ای که در زمان اجرا با تماس با ()Resources.getXML قابل خواندن هستند. می توانید فایل های مختلف پیکربندی را که در زمان اجرا استفاده می شوند ، در اینجا ذخیره کنید.

منابع جایگزین

برنامه شما باید منابع جایگزینی را برای پشتیبانی از تنظیمات خاص دستگاه فراهم کند. به عنوان مثال ، شما باید منابع قابل جایگزینی قابل ترسیم (به عنوان مثال تصاویر) برای وضوح صفحه نمایش مختلف و منابع رشته ای جایگزین برای زبانهای مختلف داشته باشید. هنگام اجرا ، Android پیکربندی دستگاه فعلی را شناسایی کرده و منابع مناسب برنامه شما را بارگیری می کند.
برای تعیین گزینه های خاص پیکربندی برای مجموعه ای از منابع ، مراحل زیر را دنبال کنید –
• یک دایرکتوری جدید در res / به نام – ایجاد کنید. در اینجا منابع_ نام یکی از منابع ذکر شده در جدول فوق است ، مانند طرح بندی ، قابل ترسیم و غیره. مقدماتی یک پیکربندی منفرد را تعیین می کند که این منابع برای آن استفاده می شود. می توانید اسناد رسمی را برای لیست کاملی از واجد شرایط برای انواع مختلف منابع بررسی کنید.
• منابع جایگزین مربوطه را در این فهرست جدید ذخیره کنید. پرونده های منبع باید دقیقاً مانند پرونده های منبع پیش فرض همانطور که در مثال زیر نشان داده شده است ، نامگذاری شوند ، اما این پرونده ها محتوای خاص جایگزین دارند. به عنوان مثال اگرچه نام فایل تصویر یکسان خواهد بود اما برای صفحه نمایش با وضوح بالا ، وضوح آن زیاد خواهد بود.

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

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 

در زیر نمونه دیگری وجود دارد که طرح بندی را برای یک زبان پیش فرض و طرح جایگزین را برای زبان عربی مشخص می کند.

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 / drawable / myimage.png و تنظیم ImageView از کد زیر استفاده خواهید کرد –

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

در اینجا خط اول کد از R.id.myimageview استفاده می کند تا ImageView را با id myimageview در یک فایل Layout تعریف کند. خط دوم کد از 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 با ID msg با استفاده از ID منبع به شرح زیر تنظیم کنید

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>

این کد برنامه این طرح را برای یک Activity بارگذاری می کند ، در روش onCreate () به شرح زیر است:

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

دسترسی به منابع در XML
فایل 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" />

حالا اگر یکبار دیگر فصل قبلی را مرور کنید ، جایی که سلام جهان را توضیح دادم! به عنوان مثال ، و من مطمئن هستم که شما درک بهتری در مورد تمام مفاهیم توضیح داده شده در این فصل خواهید داشت. بنابراین من اکیداً توصیه می کنم فصل قبلی را برای مثال کار بررسی کرده و بررسی کنید که چگونه من از منابع مختلف در سطح بسیار ابتدایی استفاده کرده ام.