Farzad Sarseifi

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

1 ارسال در این موضوع قرار دارد

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

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!  را توضیح داده‌ام، یکبار دیگر مرور کنید مطمئن هستم تمام مفاهیم توضیح داده شده در این فصل را بهتر خواهید فهمید. بنابراین، من توصیه اکید می‌کنم فصل قبل را برای کار کردن مثال و درک چگونگی استفاده من از منابع مختلف در سطح خیلی ابتدایی بررسی کنید.

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری

  • مطالب مشابه

    • توسط Aliartor
      سلام 
      من میخوام یک قسمت برای سکه برای کاربران درست کنم که با انجام کاری یا زدن روی دکمه ای اون عدد زیاد بشه این تیکه کدشو کسی داره؟
       
      و باید برای باز کردن قفل یک قسمت یک مقدار ثابتی سکه داشته باشه مثلا ۵۰تا سکه باید داشته باشه تا به اون قسمت دست رسی داشته باشه من باید آموزش این نوع قسمتارو کجا ببینم یا اگه میشه همینجا کامل راهنمایی کنید ممنون میشم.
    • توسط شاهرخ جهان زاده
      آیا تا به حال شده که بعد از ارائه اپلیکشن پیغامهایی از طرف کاربران دریافت کنید که ناشی از بسته شدن اپ در حین کار باشه؟
      در اینگونه مواقع علاوه بر زمانبر بودن پیدا کردن خطا، شاهد ریزش شدید کاربران اپ خواهید بود. پس بهتر است قبل از ارائه اپ در بازار یا Google Play تمهیداتی را برای اطلاع از پیغامهای احتمالی در نظر بگیرید.
      یکی از ابزارهای بسیار مفید استفاده کردن از کتبخانه هایی هست مه برای انجام این کار در نظر گرفته شده است، به عنوان مثال کتابخانه ACRA این کار را با ارسال ایمیل برای شما به راحتی انجام میدهد.
      استفاده کردن از این کتابخانه بسیار راحت هست.
      در قدم اول باید کتابخانه ACRA را به عنوان dependency به build.gradle اضافه کنید:
      compile 'ch.acra:acra:4.9.2' در قدم بعدی کلاس Application را بسازید و متدهای مربوطه برای ACRA را در آن پیاده سازی کنید:
      @ReportsCrashes( formUri = "", mailTo = "yourmail@yourdomain.com", customReportContent = { ReportField.APP_VERSION_CODE, ReportField.APP_VERSION_NAME, ReportField.ANDROID_VERSION, ReportField.PHONE_MODEL, ReportField.BRAND, ReportField.CUSTOM_DATA, ReportField.INITIAL_CONFIGURATION, ReportField.CRASH_CONFIGURATION, ReportField.USER_CRASH_DATE, ReportField.STACK_TRACE, ReportField.LOGCAT}, resToastText = R.string.crash_toast_text, mode = ReportingInteractionMode.TOAST) public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); ACRA.init(this); } } در بخش ReportField همانطور که میبینید، اطلاعاتی که قرار است به ایمیلتان ارسال گردد را وارد میکنیم.
      در قدم آخر فایل Manifest را باز کرده و دسترسی های مربوطه و همچنین کلاس Application را در تگ application وارد کنید:
      <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.acrademo"> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.READ_LOGS" /> <application android:name=".MyApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> برای تست عملکرد کدها، یک دکمه بسازید و سپس کدهایی را برای آن وارد کنید که باعث کرش شدن اپ گردد...
      public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void onCrash(View view){ throw new RuntimeException("App Crashed"); } } منبع: www.asifmoinulislam.com
    • توسط aliarha
      با سلام خدمت همه کاربران و مدیران انجمن p30droid
      این اولین پست منه و خیلی علاقه مند به یادگیری برنامه نویسی اندروید دارم ، (رایگان / پولی)
      درخواستی که از عزیزان دارم اگه لطف کنید پاسخ کاملی بدین ممنون میشم
      من تقریبا طراحی سایت بلدم و درصد یادگیریم بد نیست ، میخواستم بدون بهترین برنامه برای استارت کارم اندروید استودیو هست ؟
      دنبال آموزشی کامل هستم (رایگان یا پولی فرقی نداره) فقط مدیران یا کاربران تایید کنن ، آموزشی همراه با ساخت یک پروژه از 0 تا 100
      تشکر
    • توسط Farzad Sarseifi
      دانلود کتاب Android Development with Kotlin

      امروزه روند توسعه نرم افزار اندروید بسیار گسترده شده است. در طول چند سال اخیر، ما شاهد چگونگی پیشرفت ابزارهای مختلفی هستیم تا زندگی ما را ساده‌تر کند. با این حال، یکی از عناصر اصلی فرآیند توسعه نرم افزار اندروید یعنی جاوا در طول این مدت تغییر زیادی نکرده است. پلتفرم اندروید خود را با نسخه‌های جدیدتر جاوا سازگار می‌کند، ولی برای استفاده از آن ها، ما باید مدت زمان بسیار زیادی را صبر کنیم تا دستگاه‌های جدید اندرویدی به فروش مناسب بازار دست یابند. همچنین، توسعه برنامه‌ها با جاوا چالش‌های خود را به همراه دارد، چرا که جاوا زبانی قدیمی با بسیاری از مشکلات طراحی است که به واسطه محدودیت‌های سازگاری با نسخه‌های قدیمی، نمی‌توانند به سادگی حل شوند.
      از سویی دیگر Kotlin، زبانی جدید ولی پایدار است که بر روی همه‌ی دستگاه‌های اندرویدی اجرا می‌شود و بسیاری از مشکلاتی که جاوا قادر به حل آن نبود را حل می‌کند. Kotlin زبان فوق العاده ای است که زندگی توسعه دهنده را بسیار راحت‌تر می‌کند و اجازه می‌دهد تا کد امن تر، بیان گر‌تر و خلاصه‌تر ایجاد شود.
      کتاب توسعه اندروید با Kotlin، راهنمایی عملی است که به شما کمک می‌کند تا با استفاده از زبان Kotlin، روند توسعه اندروید را بهبود داده و به آن سرعت بخشید. ما میان برها و پیشرفت‌های زیاد نسبت به جاوا و راه‌های جدیدی حل مسائل رایج را ارائه دادیم. در پایان این کتاب، شما با ویژگی‌ها و ابزار‌های Kotlin آشنا خواهید شد و شما قادر خواهید بود که برنامه ای اندرویدی را با کاملا با Kotlin توسعه دهید.
       
      What You Will Learn
      Run a Kotlin application and understand the integration with Android Studio
      Incorporate Kotlin into new/existing Android Java based project
      Learn about Kotlin type system to deal with null safety and immutability
      Define various types of classes and deal with properties
      Define collections and transform them in functional way
      Define extensions, new behaviours to existing libraries and Android framework classes
      Use generic type variance modifiers to define subtyping relationship between generic types
      Build a sample application
       Table of Contents
      1: BEGINNING YOUR KOTLIN ADVENTURE
      2: LAYING A FOUNDATION
      3: PLAYING WITH FUNCTIONS
      4: CLASSES AND OBJECTS
      5: FUNCTIONS AS FIRST-CLASS CITIZENS
      6: GENERICS ARE YOUR FRIENDS
      7: EXTENSION FUNCTIONS AND PROPERTIES
      8: DELEGATES
      9: MAKING YOUR MARVEL GALLERY APPLICATION
       
      دانلود
      Packt.Android.Development.with.Kotlin.epub
       
    • توسط Farzad Sarseifi

      Kotlin چیست؟
      Kotlin (کاتلین) یک زبان برنامه‌نویسی‌ست که با استفاده از آن میتوان برنامه نویسی اندروید را توسعه داد. نسخه های اخیر اندروید استودیو به طور رسمی از کاتلین پشتیبانی می‌کنن، مسئله‌ای که در Google IO 2017 اعلام شد.
      kotlin تبدیل به bytecode جاوا میشود پس بنابراین به خوبی java میتونه روی اندروید اجرا بشه و از این نظر تفاوتی وجود نخواهد داشت. و اینکه میشه توی یک پروژه اندروید همزمان از kotlin و java استفاده کرد، بنابراین حتی اگر خیلی کم با کاتلین آشنا هستید باز هم میتونید بخشی از پروژه‌هاتون رو با کاتلین انجام بدید.
      چرا Kotlin؟
      دلیل اول اینکه با کاتلین میتونیم کدهایی تمیزتر و خواناتر بنویسیم. میدونیم که زبان جاوا boiler code زیاد داره. boiler code به کدهایی میگیم که جز syntax زبان هستن ولی همیشه بدون دلیل تکرار میشن و میشد حذفشون کرد.
       
       

  • دوره آموزشی اندروید آموزش ویدئویی اندروید آموزش برنامه نویسی اندروید اندروید کاپ دوره آنلاین اندروید کتاب های آموزشی اندروید بسته آموزشی اندروید دوره برنامه نویسی اندروید آموزش Kotlin آموزش برنامه نویسی ios مهارت های فروش
    آموزش برنامه نویسی اندروید
  • فایل