مشخصات مقاله
-
3325
-
0.0
-
3314
-
0
-
0
برنامه نویسی تحت اندروید با Android Studio-منابع اندروید
فایل های منبع
منابع در اپلیکیشن های اندروید، از قبیل تصاویر و فایل های پیکربندی XML، (در جایی) جدا از متن برنامه (Source Code) نگه داشته می شوند .
فایل های منبع باید در مسیر /res در زیرپوشه ای از پیش تعیین شده (در برنامه ی شما) قرار گیرند . زیر پوشه ی نام برده به نوع منبعی که در آن ذخیره شده بستگی دارد .
جدول زیر توضیح مختصری درباره ی منابع پشتیبانی شده و پیشوندهای استاندارد پوشه های آن ها در اختیار شما قرار می دهد :
تعریف رشته ها, آرایه های رشته ای (string arrays)
لیست زیر نمونه ای از فایلی به نام values.xml در /res/values می باشد که تعدادی ثابت های رشته ای (string constant), یک آرایه ی رشته ای (string array), یک رنگ و یک بعد را تعریف می کند .
Test
Settings
Hello world!
Ubuntu
Android
Microsoft Windows
#ffff0000
10dp
شروع کار برنامه نویسی اندروید
1 برنامه نویسی تحت اندروید با Android Studio یا Eclipse ADT-اندروید چیست
2 برنامه نویسی تحت اندروید با Android Studio یا Eclipse ADT, ابزار برنامه نویسی اندروید(ADT) 3 برنامه نویسی تحت اندروید با Android Studio یا Eclipse ADT-شبیه سازی محیط اندروید 4 برنامه نویسی تحت اندروید با Android Studio یا Eclipse ADT,شروع کار با Android Studio 5 برنامه نویسی تحت اندروید با Android Studio یا Eclipse ADT,شروع کار با Eclipse ADT 6 برنامه نویسی تحت اندروید با Android Studio یا Eclipse ADT-بخش هایی از یک برنامه ی کاربردی اندروید 7 برنامه نویسی تحت اندروید با Android Studio یا Eclipse ADT-منابع اندروید 8 برنامه نویسی تحت اندروید با Android Studio یا Eclipse ADT-بررسی و اعتبار سنجی طرح بندی 9 برنامه نویسی اندروید با Android Studio یا Eclipse ADT-ساخت برنامه تبدیل دما 10 برنامه نویسی تحت اندروید با Android Studio یا Eclipse ADT-استفاده از Resource در اندروید 11 راه حل هایی برای مشکلات برنامه نویسی اندروید-رفع مشکلات برنامه نویسی android 12 آموزش نصب ابزار طراحی و توسعه اندروید-آموزش نصب android development tools
مقدمات اندروید fundamental
آموزش Intent در اندروید-intent چیست
2 آموزش Intent در اندروید-intent filter در اندروید 3 آموزش Intent در اندروید-بکارگیری intent ها 4 آموزش Intent در اندروید-intent های ضمنی 5 مدیریت چرخه حیات برنامه اندروید-چرخه حیات activity 6 بکارگیری grid ها و list ها با Recycler-view-استفاده از grid و list در Recycler-view 7 آموزش نحوه ی استفاده از List در اندروید-استفاده از list در android 8 آموزش نحوه ی استفاده از List در اندروید-آداپتور اختصاصی در android 9 آموزش نحوه ی استفاده از List در اندروید-بهینه سازی کارایی آداپتور اندروید 10 آموزش ثبت وقایع و logging تراکنش ها در اندروید 11 استفاده از پنجره های محاوره ای (Dialogue) در برنامه نویسی اندروید
استفاده از Fragments و ActionBar
1 طرح بندی چند قابه-multiple-pane layout در اندروید
2 ایجاد طرح بندی چند قابه - fragmentدر اندروید 3 آموزش نحوه ی استفاده از action bar اندروید قسمت اول 4 آموزش نحوه ی استفاده از action bar اندروید قسمت دوم 5 آموزش نحوه ی استفاده از action bar اندروید قسمت سوم 6 آموزش نحوه ی استفاده از action bar اندروید قسمت چهارم 7 آموزش نحوه ی استفاده از action bar اندروید قسمت پنجم 8 آموزش نحوه ی استفاده از action bar اندروید قسمت ششم 9 آموزش نحوه ی استفاده از action bar اندروید قسمت هفتم 10 آموزش نحوه ی استفاده از action bar اندروید قسمت هشتم
کار با فایل ، دسترسی به شبکه و پردازش های همزمان در اندروید
1 پایگاه داده ی SQlite و content provider (قسمت اول)
2 پایگاه داده ی SQlite و content provider (قسمت دوم) 3 پایگاه داده ی SQlite و content provider (قسمت سوم) 4 پایگاه داده ی SQlite و content provider (قسمت چهارم) 5 پردازش XML به وسیله ی xmlpullparser 6 آموزش ذخیره سازی جفت کلید-مقدار (قسمت اول) 7 آموزش ذخیره سازی جفت کلید-مقدار (قسمت دوم) 8 آموزش شبکه سازی در اندروید 9 پردازش پس زمینه ای با Handler, AsynchTask و Loader 10 آموزش نحوه ی پردازش JSON در اندروید
برنامه نویسی پیشرفته رابط کاربری اندروید
1 آموزش کشیدن و رها کردن Drag and Drop در آندروید
2 آموزش استفاده از Drawable ها در اندروید 3 آموزش تم Theme و استایل ها Style در اندروید 4 آموزش ساخت wallpaper والپیپر زنده در اندروید 5 طراحی widget در android 6 آموزش ساخت view پیشرفته در اندروید 7 آموزش Resource Selector انتخاب گرهای منابع دراندروید 8 آموزش متحرک سازی animation در اندروید
سرویس ها و Broadcast Receiver
آموزش ایجاد و بهره گیری از سرویس ها در اندروید
زمانبندی task ها در اندروید 3 بهره گیری از Broadcast Receivers در اندروید 4 آموزش اطلاع رسانی (notification) در اندروید 5 آموزش گرفتن فایل پشتیبانی از داده ها در اندروید 6 نحوه ی بهینه سازی حافظه و افزایش کارایی در اندروید تزریق و تست وابستگی و ابزارها در اندروید
آزمایش برنامه های کاربردی android- اندروید- اجرا و راه اندازی تست ها
آزمایش برنامه های کاربردی android- اندروید- تست activity اندروید 3 آزمایش برنامه های کاربردی android- تست رابط کاربری در android 4 استفاده از Robotium در اندروید-چهارچوب تست robotium 5 مسائل و مشکلات کارایی سیستم اندروید-android ساخت برنامه های اندروید
استفاده از gradle در اندروید-android
استفاده از ADB در اندروید-پل رفع اشکال اندروید 3 آموزش ساخت برنامه های اندروید با استفاده از Apache Maven برنامه مکان یابی و نقشه های گوگل در اندروید
آموزش کار با مکان یابی در اندروید-کار با api مکان یابی در android
آموزش بکاربری نقشه های گوگل در اندروید سنسور ها و لمس در اندروید
آموزش استفاده از دوربین دستگاه اندروید با دو روش Intent و API
2 آموزش استفاده از sensor manager در اندروید 3 مدیریت رخدادهای تک لمسی و چند لمسی در اندروید پروژه های کتابخانه ای اندروید 1 آموزش ایجاد کتابخانه ویژه ی برنامه های اندروید 2 آموزش استفاده از کتابخانه Otto event bus در اندروید موضوعات ویژه برنامه نویسی اندروید 1 آموزش media API به منظور ضبط و پخش صدا 2 آموزش دانلود و کامپایل در اندروید 3 توضیحاتی درباره ی معماری اندروید 4 آموزش دریافت پیام از سرویسهای Cloud در آندروید 5 آموزش توابع تقویم در اندروید استفاده از ECLIPSE در برنامه نویسی اندروید 1 استفاده از ابزار توسعه اندورید درeclipse-استفاده از adt در eclipse 2 آموزش اشکال زدایی در آندروید برنامه نویسی تحت اندروید با Android Studio یا Eclipse ADT-منابع اندروید کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده می باشد و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد.
فایل های منبع
منابع ,از قبیل تصاویر و فایل های پیکربندی XML, در برنامه های کاربردی اندروید (در جایی) جدا از متن برنامه (Source Code) نگه داشته می شوند
فایل های منبع باید در مسیر /res در زیرپوشه ای از پیش تعیین شده (در برنامه ی شما) قرار گیرند . زیر پوشه ی نام برده به نوع منبعی که در آن ذخیره شده بستگی دارد .
جدول زیر توضیح مختصری درباره ی منابع پشتیبانی شده و پیشوندهای استاندارد پوشه های آن ها در اختیار شما قرار می دهد :
تعریف رشته ها, آرایه های رشته ای (string arrays)
لیست زیر نمونه ای از فایلی به نام values.xml در /res/values می باشد که تعدادی ثابت های رشته ای (string constant), یک آرایه ی رشته ای (string array), یک رنگ و یک بعد را تعریف می کند .
Test
Settings
Hello world!
Ubuntu
Android
Microsoft Windows
#ffff0000
10dp
تعریف کننده های منابع (resource qualifiers)
همچنین می توان توصیف کننده های اضافی به اسم پوشه افزود تا معلوم شود منابع مربوطه فقط برای پیکربندی های خاص باید مورد استفاده قرار گیرد . به عنوان مثال, می توان تصریح کرد که فایل layout تنها برای تصویر یا صفحه نمایشی با اندازه ی معین تعریف شده و قابل استفاده می باشد .
شناسه ی منابع و R.java
سیستم ساخت اندروید (Android Build System) به هر منبع یک شناسه یا ID اختصاص می دهد . دایرکتوری gen دربردارنده ی فایل ارجاعات (reference file) R.java می باشد که این فایل شامل مقادیر تولید شده مورد نظر است . این ارجاعات, مقادیر عدد صحیح ایستا (static integer value) می باشند .
در صورت افزودن فایل منبع (resource file) جدید, ارجاع همخوان و مرتبط به صورت خودکار در فایل R.java ایجاد می شود . نیازی به ایجاد تغییرات دستی در فایل مذکور نبوده و هر تغییر ایجاد شده توسط tooling دوباره جای نویسی (overwrite) می شود .
سیستم اندروید برای دسترسی به فایل های منبع مربوطه (از طریق این شناسه ها) متدهایی را عرضه می کند .
به عنوان مثال, به منظور دسترسی به رشته ای با این شناسه R.String.yourString در متن برنامه ((Source Code, از متد getString (R.String.yourString) که در کلاس Context تعریف شده استفاده می کنیم .
پیشنهاداتی برای شناسه ی منابع
SDK اندروید از نشان گذاری (notation) camelCase برای عمده ی ID های خود مثل buttonRefresh استفاده می کند, به شما نیز توصیه می شود همین رویه را دنبال کنید .
منابع سیستم (System Resources)
اندروید منابع لازمه را نیز فراهم می کند که system resources خوانده می شود . منابع سیستم توسط پیشوند فضای نام android از منابع محلی (local resources) تمییز داده می شوند . برای مثال, متد android.R.string.cancel پلتفرم رشته (string platform) را برای عملیات کَنسِل تعریف می کند .
فایل های منبع طرح بندی (layout resource files)
Activity های اندروید رابط کاربری خود را با استفاده از views (ابزارک ها( و fragments طراحی و تعریف می کنند . رابط کاربری مزبور را می توان توسط فایل های منبع XML در پوشه ی /res/layout یا با استفاده از کد Java تعریف کرد (البته می توان ترکیبی از دو روش را بکار برد), اگرچه تعریف طرح بندی کلی به وسیله ی فایل های منبع XML به روش دیگر ترجیح داده می شود . این روش منطق برنامه نویسی را از تعریف طرح کلی (layout) جدا می سازد و همچنین این امکان را فراهم می آورد که برای دستگاه های متمایز, طرح بندی (layout) متفاوتی تعریف کرد . فایل های طرح بندی XML
از فایل های منبع طرح بندی (layout resource files) به عنوان layout نیز یاد می شود . طرح کلی ViewGroups, Views, ارتباط (بین این دو) و صفت های آن ها را با نمایش XML مشخص می کند . مثال :
همان طور که در مثال زیر مشاهده می کنید, طرح کلی (layout) توسط متد setContentView به activity تخصیص داده می شود :
package com.vogella.android.first; import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
تعریف شناسه ها
اگر دسترسی به views تنها باید از کد java انجام شود, در آن صورت لازم است به view (با استفاده از صفت android:id ) شناسه منحصر بفردی تخصیص داد . برای این منظور از صفت android:id عنصر مربوطه در فایل طرح بندی استفاده کنید . در مثال زیر به دکمه ای شناسه ی button1 (از طریق پارامتر android:id="@+id/button1") تخصیص داده می شود :
بدین ترتیب, دستور مثال فوق در صورت نیاز شناسه ی جدیدی در فایل R.java ایجاد کرده و شناسه ی تعریف شده را به view مربوطه اختصاص می دهد .
نکاتی درباره ی شناسه های از پیش تعریف شده و جای گذاری آن در فایلی مجزا
همان طور که در بخش قبل توضیح دادیم, اندروید به شما اجازه می دهد ID کامپوننت های رابط کاربری را (در فایل های طرح بندی) به صورت پویا تعریف کنید . برای اینکه مکانی واحد ویژه ی تعریف شناسه داشته باشید, می توانید ID ها را در فایل پیکربندی (Config file) تعریف کنید .
برای کنترل و مدیریت شناسه ها, همچنین می توانید فایلی (که معمولاً ids.xml نامیده می شود) در پوشه ی /res/values ایجاد کرده و شناسه ی خود را در این فایل تعریف کنید . به مثال زیر توجه کنید :
این کار امکان استفاده ی شما را از شناسه ی نام برده در فایل layout فراهم می کند .
توجه:
اگر می خواهید شناسه را در فایلی جداگانه تعریف کنید, ابتدا باید @+id را از فایل layout خود حذف کنید; در غیر این صورت, با پیغام خطا مبنی بر اینکه فایلهای مورد نظر قبلاً ایجاد شده اند مواجه می شوید .
نکاتی درباره ی نحوه ی افزایش کارایی در رابطه با طرح بندی
محاسبه ی layout و ترسیم views عملیاتی بسیار سنگین بوده و به منابع انبوه نیاز دارد . جهت افزایش و بهبود کارایی توصیه می شود از ساده ترین طرح بندی ها استفاده کنید . برای مثال, می توان از تودرتو کردن بیش از حد layout manager یا بکاربردن نوع های بسیار پیچیده و سنگین آن خودداری کرد (به خصوص در موردی که استفاده از یک layout manager ساده, نیاز شما را براورده می سازد) .
View Class
View در سیستم عامل اندروید نوعی ابزارک (مانند دکمه یا layout manager) محسوب می شود . SDK اندروید با استفاده از کلاس های Button , TextView , EditText ابزارک های متعارف, استاندارد ارائه می دهد (البته جعبه ابزار طراحی و توسعه ی اندروید شامل ابزارک های پیچیده ای همچون listView نیز می شود) .
کلیه ی کامپوننت های view اندروید (قابلیت های) کلاس android.View.View را بسط می دهند . کلاس مذکور بسیار گسترده بوده (شامل بیش از 18000 خط کد می باشد) و بهمین خاطر قابلیت های پایه ای زیرکلاس ها (subclasses) را فراهم می کند .
بسته های اصلی کامپوننت views بخشی از فضای نام android.View تمامی کلاس های پایه و )فضای نام( android.Widget ابزارک های پیش فرض محیط اندروید می باشد .
Layout manager چیست ؟
Layout manager زیر کلاس ViewGroup بوده و مسئول طرح بندی خود و فرزندش Views می باشد. گفتنی است اندروید, layout manager های پیش فرض گوناگونی دارا بوده و پشتیبانی می کند .
کارامدترین layout manager ها
از ویرایش android 4.0 به بعد, LinearLayout , FrameLayout , RelativeLayout و GridLayout پرکاربردترین layout manager های اندروید اطلاق می گردنند .
AbsoluteLayout ناکارامد طلقی می گردد و TableLayout نیز توسط GridLayout بهتر پیاده سازی می شود.
توجه : RelativeLayout از جمله layout manager های پیچیده و سنگین می باشد که برای طرح بندی فرزندها (زیر مجموعه های خود) به عملیات محاسبه پیچیده و منابع زیادی نیاز دارد, بنابراین استفاده از آن در مواردی که layout ساده کفایت می کند توصیه نمی شود .
Layout attributes (خصیصه های طرح بندی(
کلیه ی طرح بندی ها به طراح این اجازه را می دهد که صفت یا خصیصه های مربوطه را تعریف کند . زیر مجموعه ها (children) نیز می توانند خصیصه تعریف کنند که ممکن است بعداً توسط طرح بندی والد مورد ارزیابی قرار گیرد .
زیر مجموعه ها همچنین می توانند width و height خود را به وسیله ی صفت های زیر تعیین کنند :
جدول 6. تعریف طول و عرض
ابزارک ها می توانند با استفاده از تعریفاتی همچون dp از اندازه های ثابت مثل dp100 استفاده کنند . اگرچه dp اندازه ای ثابت و از پیش تعیین شده است, می توان آن را با پیکربندی های دستگاه (device configuration) متفاوت تنظیم کرد .
مقدار match_parent به اپلیکیشن دستور می دهد ابزارک را در والد (آن) بزرگنمایی کند . مقدار wrap_content به layout فرمان می دهد که به ابزارک کمترین مقدار ممکن (فضا) اختصاص یابد تا ابزارک نام برده به درستی پردازش (render) شود :
FrameLayout
FrameLayout یک layout manager است که کلیه ی عنصرهای فرزند یا زیر مجموعه را روی هم دیگر ترسیم می کند که در نهایت امکان ایجاد جلوه های بصری بسیار زیبایی را فراهم می کند. نمونه ای از این layout manager را تصویر زیر مشاهده می کنید :
LinearLayout
LinearLayout تمامی عناصر زیر مجموعه را بسته به صفت android.orientation در ستون یا ردیفی واحد قرار می دهد. مقادیر موجود این صفت horizontal و vertical می باشند که مقدار پیش فرض آن معمولاً horizontal است .
در صورت استفاده از horizontal, عناصر فرزند به صورت ذیل طرح بندی می شوند :
در حالی که مقدار Vertical به ترتیب زیر طرح بندی را انجام می دهد :
می توان با تودرتو کردن LinearLayout طرح بندی های پیچیده تری ایجاد کرد .
LinearLayout با پشتیبانی و بهره گیری از پارامتر طرح بندی, android:layout_weight به تک تک زیر مجموعه ها weight تخصیص می دهد . این پارامتر تعیین می کند چه مقدار از فضای اضافه بر سازمان موجود در طرح کلی به View اختصاص یابد . اگر, به طور مثال, شما دو ابزارک در اختیار دارید که اولی layout_weight به مقدار 1 و دومی 2, اولین ابزارک 3/1 (یک سوم) و دومین 3/2 (دو سوم) فضای موجود را به خود اختصاص می دهند . همچنین می توانید با تنظیم layout_width به 0, نسبتی ثابت و معین داشته باشید .
RelativeLayout
RelativeLayout به طراح اجازه می دهد ابزارک ها را در رابطه با یکدیگر چیده و سازمان دهی کند. از این طرح بندی می توان جهت ایجاد طرح های پیچیده بهره گرفت .
یکی از کاربردهای ساده ی RelativeLayout , قرار دادن یک تک کامپوننت در مرکز است . برای نیل به این هدف کافی است یک کامپوننت را به RelativeLayout افزوده, سپس خصیصه ی android:Layout _ CenterInParent را روی true تنظیم کنید .
GridLayout
GridLayout در ویرایش 4.0 سیستم عامل اندروید برای اولین بار رونمایی شد . طرح بندی مذکور به شما امکان می دهد view را به صورت یک Grid درآورید .GridLayout ناحیه ی طراحی و ترسیم (drawing area) را به سه بخش : ردیف ها, ستون ها, سلول ها تقسیم بندی می کند .
می توانید تعداد ستون و ردیف هایی که می خواهید برای هر view تعریف شود را خود تعیین کنید . در صورت مشخص نکردن این موارد,GridLayout از طرح بندی پیش فرض برای این منظور استفاده می کند (برای مثال, یک ستون و یک ردیف انتخاب می کند, موقعیت view را نیز بسته به ترتیب تعریف views تعیین می کند) .
فایل layout زیر طرح بندیی با (استفاده از)GridLayout تعریف کرده .
برنامه ی فوق رابط کاربری مشابه آنچه در تصویر زیر مشاهده می کنید, تولید می کند :
ScrollView
کلاس ScrollView زمانی بکار گرفته می شود که view به دلیل بزرگ بودن در یک صفحه جا نشود . در این مورد, scroll bar ای در کناره ی صفحه به نمایش گذاشته می شود که به کمک آن می توان صفحه را بالا و پایین کرد و از این طریق کل view را مشاهده کرد .
البته view نام برده می تواند عناصر دیگری را نیز در خود جای دهد .
مثال:
خصیصه ی android:fillViewport="true", scrollview را روی full screen تنظیم می کند, حتی اگر عناصر به اندازه ای کوچک باشند که در یک صفحه جای گیرند .
در این مطلب از سری آموزش برنامه نویسی اندروید به بررسی کامل منابع و resource ها در سیستم عامل اندروید پرداختیم. امیدواریم که استفاده لازم را برده باشید. در آموزش بعدی با یکدیگر نحوه بررسی و اعتبار سنجی انواع layout در اندروید را دنبال می کنیم.