مشخصات مقاله
-
822
-
0.0
-
2154
-
0
-
0
آموزش Xamarin-Hello, Android : بررسی عمیق
آموزش Xamarin-Hello, Android : بررسی عمیق
معرفی Android با Xamarin
در این راهنمای دو بخش، شما اولین برنامه Xamarin.Android خود را با استفاده از ویژوال استودیو خواهید ساخت و درک مفاهیم توسعه برنامه Android را با Xamarin خواهید آموخت. در طول راه، ابزارها، مفاهیم و مراحل مورد نیاز برای ساخت و راه اندازی یک برنامه Xamarin.Android معرفی خواهد شد.
Hello, Android: بررسی عمیق
در Hello, Android Quickstart، شما اولین برنامه Xamarin.Android خود را ساختید و اجرا کردید. اکنون وقت آن رسیده است تا درک عمیقتری از نحوه کارکرد برنامه های Android داشته باشید تا بتوانید برنامه های پیچیدهتری را بسازید. این راهنما گامهایی را که در Hello, Android انجام دادید را بررسی می کند تا شما بتوانید بدانید که چه چیزی انجام داده اید و شروع به درک پایه ای از توسعه برنامه های Android کنید.
این راهنما با موضوعات زیر مطابقت دارد:
- مقدمه ای بر ویژوال استودیو - مقدمه ای بر ویژوال استودیو و ایجاد یک برنامه جدید Xamarin.Android.
- آناتومی یک برنامه Xamarin.Android – سیری در قطعات ضروری برنامه Xamarin.Android.
- اصول برنامه و مبانی معماری - مقدمه ای بر فعالیت ها، Manifest اندروید و عطر و طعم کلی توسعه آندروید.
- رابط کاربری (UI) - ایجاد رابط کاربری با طراحی Android.
- فعالیت ها و فعالیت چرخه حیات - مقدمه ای بر چرخه عمر فعالیت و اتصال رابط کاربر در کد.
- تست، استقرار، و نکات تکمیلی- درخواست خود را با مشاوره در مورد آزمایش، استقرار، تولید آثار هنری و غیره تکمیل کنید.
این راهنما به شما کمک می کند مهارت ها و دانش مورد نیاز برای ساخت یک برنامه ی کاربردی روی صفحه نمایش را توسعه دهید. پس از اینکه شما از طریق آن کار کردید، باید قسمت های مختلف نرم افزار Xamarin.Android و چگونگی هماهنگ شدن آنها را درک کنید.
مقدمه ای بر ویژوال استودیو
ویژوال استودیو یک IDE قدرتمند از مایکروسافت است. دارای ویژگی یک طراح بصری کاملا یکپارچه، یک ویرایشگر متن است که شامل ابزار refactoring، assembly browser ، source code integration و غیره است. در این راهنمای شما یاد خواهید گرفت که از برخی ویژگی های ویژوال استودیو با پلاگین Xamarin استفاده کنید.
ویژوال استودیو کد را در Solutions ها و Projects ها سازماندهی می کند. یک Solution یک ظرف(container) است که می تواند یک یا چند پروژه را نگه دارد. یک پروژه می تواند یک برنامه (مانند iOS یا Android)، یک کتابخانه پشتیبانی کننده، یک برنامه آزمایشی و غیره باشد.در برنامه Phoneword ، شما یک پروژه جدید اندروید با استفاده از الگوی برنامه اندروید به Phoneword Solution ایجاد شده در راهنمای Hello, Android اضافه کردید.
آناتومی یک برنامه Xamarin.Android
تصویر زیر محتویات Solution را لیست می کند. این Solution Explorer است که شامل ساختار دایرکتوری و تمام فایل های مرتبط با Solution است:
یک راه حل(Solution) به نام Phoneword ایجاد شد و Android project Phoneword در داخل آن قرار گرفت.
به آیتم های موجود در پروژه نگاه کنیم تا هدف هر فولدر را مشاهده کنیم:
- Properties: شامل فایل AndroidManifest.xml است که تمام الزامات مربوط به برنامه Xamarin.Android را شرح می دهد، از جمله نام، شماره نسخه و مجوزها. پوشه Properties همچنین شامل AssemblyInfo.cs است ، که یک فایل متادیتی.NET می باشد تمرین خوبی برای پر کردن این فایل با برخی از اطلاعات اساسی در مورد درخواست شما است.
- References: شامل References های مورد نیاز برای ساخت و اجرای برنامه است. اگر دایرکتوری References را گسترش دهید ، شما پیوندهای(References) مربوط به .NET assemblies مانند System ، System. Core ، و System.Xml را خواهید دید و همچنین یک پیوند به Xamarin's Mono.Android assembly .
- Assets : حاوی فایل هایی است که برنامه نیاز به اجرا دارد از جمله فونت ها، فایل های داده محلی و فایل های متنی. فایل های موجود در اینجا از طریق کلاس Assets تولید شده قابل دسترسی هستند.
- Resources : شامل منابع نرم افزار مانند strings ها، images ، و layouts.شما می توانید به این منابع در کدها از طریق کلاس generated Resource دسترسی پیدا کنید. application template همچنین شامل یک راهنمای مختصر برای منابع در AboutResources.txt فایل است.
Resources (منابع)
دایرکتوری Resources شامل چهار پوشه به نام drawable، layout و values و همچنین یک فایل به نام Resource.designer.cs است.
این آیتم ها در جدول زیر خلاصه می شوند:
- Drawable:دایرکتوری drawable منابع drawable را مانند images و bitmaps دارد.
- Mipmap : دایرکتوری mipmap دارای فایل های drawable برای different launcher icon densities است. در قالب پیش فرض، دایرکتوری drawable فایل آیکون نرم افزار، Icon.png را می دهد.
- Layout : دایرکتوری طرح شامل فایل های طراح Android (.axml) است که رابط کاربر را برای هر صفحه یا فعالیت مشخص می کند. این الگو یک طرح پیش فرض به نام Main.axml ایجاد می کند.
- Values: این دایرکتوری فایلهای XML را ذخیره می کند که مقادیر ساده مانند strings ها، integers و colors را ذخیره می کنند. قالب یک فایل برای ذخیره مقادیر رشته ای به نام Strings.xml ایجاد می کند.
- Resource.designer.cs: همچنین به عنوان کلاس Resource شناخته می شود، این فایل یک کلاس جزئی است که دارای IDs های منحصر به فرد اختصاص داده شده به هر منبع است. این به طور خودکار توسط ابزار Xamarin.Android ایجاد می شود و به صورت ضروری احیا(regenerated) می شود. این فایل نباید به صورت دستی ویرایش شود، همانطور که Xamarin.Android تغییرات دستی را به آن تغییر خواهد داد.
اصول برنامه و مبانی معماری
برنامه های کاربردی آندروید نقطه ورودی واحد ندارند؛ یعنی، هیچ کدام از خطوط کد در برنامه کاربردی که سیستم عامل برای شروع برنامه درخواست می کند وجود ندارد. در عوض، یک برنامه زمانی شروع می شود که آندروید یک کلاس از کلاس های خود را ایجاد کند، در طی این مدت آندروید تمام فرایند برنامه را به حافظه بارگذاری می کند.
این ویژگی منحصر به فرد اندرویدی می تواند هنگام طراحی برنامه های پیچیده و یا تعامل با سیستم عامل Android بسیار مفید باشد. با این حال، این گزینه ها در هنگام برخورد با یک سناریوی اساسی مانند برنامه Phoneword نیز پیچیده اند. به همین دلیل، اکتشاف معماری آندروید(exploration of Android architecture) در دو بخش تقسیم می شود. این راهنما یک برنامه کاربردی را که از رایج ترین نقطه ورود برای یک برنامه Android استفاده می کند، تشریح می کند: صفحه اول. در Hello, Android Multiscreen پیچیدگی کامل معماری آندروید به عنوان روش های مختلف برای راه اندازی یک برنامه مورد بحث قرار گرفته است.
سناریوی Phoneword - شروع با فعالیت
هنگامی که برنامه Phoneword را برای اولین بار در شبیه ساز یا دستگاه باز کنید، سیستم عامل اولین فعالیت(Activity) را ایجاد می کند. یک Activity یک کلاس ویژه آندروید است که مربوط به یک صفحه برنامه کاربردی است و مسئول طراحی و فعال سازی رابط کاربر است. هنگامی که آندروید اولین Activity برنامه را ایجاد می کند، کل برنامه را بارگذاری می کند:
از آنجایی که هیچ پیشرفت خطی(linear progression) از طریق نرم افزار Android وجود ندارد (شما می توانید برنامه را از چندین نقطه راه اندازی کنید)، آندروید یک راه منحصر به فرد برای پیگیری آنچه کلاس ها و فایل ها یک برنامه را تشکیل می دهند دارد. در مثال Phoneword، تمام قسمت هایی که نرم افزار را تشکیل می دهند با یک فایل XML خاص به نام Manifest Android شناخته می شوند. نقش Android Manifest برای پیگیری محتویات برنامه، properties ها و مجوزها و افشای آنها به سیستم عامل Android است. شما می توانید از برنامه Phoneword به عنوان یک single Activity( screen) و مجموعه ای از منابع و فایل های کمکی که با هم توسط فایل Android Manifest ادغام شده اند فکر کنید ، همانطور که در نمودار زیر نشان داده شده است:
چند بخش دیگر در رابطه با روابط بین بخش های مختلف برنامه Phoneword است.نمودار بالا باید درک بهتری به شما ارائه دهد. این اکتشاف با رابط کاربری(user interface) آغاز می شود، همانطور که در مورد طراحان آندروید و فایل های layout آن بحث می شود.
رابط کاربری
Main.axml فایل layout رابط کاربر برای صفحه اول در برنامه است. Axml نشان می دهد که این یک فایل طراحی آندرویید است (AXML مخفف Android XML است). نام اصلی از نقطه نظر اندرویدی دلخواه است - فایل پوسته می تواند به نام دیگری نامگذاری شده باشد. وقتی Main.axml را در IDE باز می کنید ویرایشگر، تصویری را برای فایل های layout اندروید به نام Android Designer به ارمغان می آورد:
در برنامه Phoneword ، ID برای دکمه Translate >> @+id/TranslateButton تنظیم شده است.
هنگامی که شما ویژگی id مربوط به TranslateButton را تنظیم می کنید، Android Designer ، کنترل ترجمه را به کلاس Resource می دهد و آنرا یک شناسه Resource از TranslateButton می نامد. این نقشه برداری از visual control به کلاس باعث می شود مکان و استفاده از TranslateButton و کنترل های دیگر ، در کد برنامه را پیدا کنید.وقتی که بخشی از کد را که کنترل ها را کنترل می کند جدا کنید ، این کار باعث می شود جزئیات بیشتر تحت پوشش قرار بگیرد. همه چیزهایی که اکنون باید بدانید این است که نمایش کد از کنترل با نمایش visual control در designer از طریق ویژگی id مرتبط است.
Source View
برای استفاده Xamarin.Android همه چیز در سطح طراحی تعریف شده به XML ترجمه شده است. طراح آندرویید(Android Designer) یک source view فراهم می کند که حاوی XML است که از visual designer ساخته شده است.شما می توانید XML را با سوئیچ کردن به Source panel در قسمت چپ صفحه designer ببینید ، همانطور که در تصویر زیر نشان داده شده است:
این سورس کد XML باید شامل Text (Large)، Plain Text و دو عنصر دکمه باشد.
Tools و concepts پشت بخش visual رابط کاربری اکنون پوشش داده شده اند. وقت آن است که به کدی که رابط کاربری را قدرت می دهد بروید ، Activities و Activity Lifecycle بررسی کنید.
Activities and the Activity Lifecycle
کلاس Activity شامل کدی است که رابط کاربر را قدرتمند می کند. Activity مسئول پاسخ به تعامل کاربر و ایجاد یک تجربه کاربری پویا (dynamic) است. در این بخش، کلاس Activity ، فعالیت Activity Lifecycle را مورد بحث قرار می دهد و کدی را که رابط کاربر را در برنامه Phoneword قدرتمند می کند، تجزیه می کند.
کلاس Activity
برنامه Phoneword دارای تنها یک صفحه (Activity) است. کلاسی که صفحه را قدرتمند می کند MainActivity نامیده می شود و در فایل MainActivity.cs قراردارد. اسم MainActivity در آندروید اهمیت خاصی ندارد - هرچند این کنوانسیون برای نامگذاری اولین Activity در یک برنامه اصلی است، Android به هیچ وجه اهمیتی نمی دهد.
وقتی MainActivity.cs را باز می کنید، می توانید ببینید که کلاس MainActivity یک کلاس subclass از Activity است و Activity با ویژگی Activity فعال می شود:
[Activity (Label = "Phone Word", MainLauncher = true)]
public class MainActivity : Activity
{
...
}
ویژگی Activity ، Activity را با Android Manifest ثبت می کند؛ این به Android اجازه می دهد تا بداند که این کلاس بخشی از برنامه Phoneword است که توسط این مانیفست اداره می شود. Label property متن را تنظیم می کند که در بالای صفحه نمایش داده می شود. خاصیت MainLauncher به Android می گوید تا این Activity را هنگام اجرای برنامه، نمایش دهد. این خاصیت هنگامی که فعالیت ها (screens) به برنامه افزوده می شود مهم است، همانطور که در Hello, Android Multiscreen توضیح داده شده است.
حالا که MainActivity به خوبی پوشش داده شده است وقت آن است با بررسی عمیق تر کدهای Activity به مبحث Activity Lifecycle بپردازیم.
Activity Lifecycle
در آندروید، فعالیت ها به واسطه تعاملات آنها با کاربر، از مراحل مختلف lifecycle گذر می کنند. فعالیت ها می توانند created ، started و paused شده، resumed و destroyed شوند، و غیره. کلاس Activity شامل متد هایی است که سیستم در نقاط خاصی از lifecycle صفحه نمایش فرخوانده می شوند. نمودار زیر یک چرخه معمولی از Activity و نیز برخی از روش های lifecycle مرتبط را نشان می دهد:
با استفاده از متدهای Activity lifecycle، می توانید کنترل کنید که چگونه فعالیت ها بارگذاری می شود، چگونه به کاربر پاسخ می دهد و حتی پس از اینکه صفحه دستگاه ناپدید می شود، چه اتفاقی می افتد. به عنوان مثال، شما می توانید متد های lifecycle را در نمودار بالا برای انجام بعضی از وظایف مهم غیرفعال کنید:
- OnCreate : ایجاد views ، متغیرهای اولیه را تنظیم می کند و سایر کارهای آماده را قبل از اینکه کاربر فعالیت را ببیند انجام می دهد. وقتی که Activity به حافظه بارگذاری می شود این متد فقط یکبار فراخوانی می شود.
- OnResume : انجام هر گونه وظایفی که باید هر بار که Activity به صفحه دستگاه برمی گردد، انجام شود.
- OnPause: انجام هر گونه کارهایی که باید هر بار که Activity صفحه نمایش دستگاه را ترک می کند انجام شود.
هنگام اضافه کردن کد سفارشی به یک متد lifecycle در Activity ، شما متد lifecycle را براساس پیاده سازی override کردین. شما به متد lifecycle موجود وراد شوید (که برخی از آنها قبلا متصل شده اند)، و این متد را با کد خودتان گسترش دهید. شما پیاده سازی پایگاه(base implementation) را از داخل متد خود می گیرید تا مطمئن شوید کد اصلی قبل از کد جدید شما اجرا می شود. یک مثال از این در بخش بعدی نشان داده شده است.Activity Lifecycle یک بخش مهم و پیچیده آندروید است.
OnCreate
آندرویید متد Activity's OnCreate وقتی که Activity ایجاد شده است فراخوانی می کند.(قبل از اینکه screen) برای کاربر حاظر شود). شما می توانید متد OnCreate lifecycle را برای ایجاد views ها و Activity های خود برای دیدار با کاربر آماده کنید.
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
// Set our view from the "main" layout resource
SetContentView (Resource.Layout.Main);
// Additional setup code will go here
}
در برنامه Phoneword اولین کاری که در OnCreate انجام می دهید بارگذاری رابط کاربری ایجاد شده در Android Designer است.برای بارگذاری UI ، SetContentView را فراخوانی کنید و نام resource layout را برای فایل layout >>Main.axml وارد کنید. layout در Resource.Layout.Main قرار دارد.
SetContentView (Resource.Layout.Main);
هنگامی که MainActivity راه اندازی می شود،یک view بر اساس محتویات فایل Main.axml ایجاد می شود. توجه داشته باشید که نام فایل layout با نام Activity مرتبط است - Main.axml یک layout برای MainActivity است. این از دیدگاه آندروید مورد نیاز نیست ، اما همانطور که شروع به افزودن صفحه های بیشتر به برنامه می کنید، شما متوجه خواهید شد که این کنوانسیون نامگذاری فایل Code را به فایل layout منطبق می کند.
پس از تهیه فایل layout ، می توانید شروع به جستجو کردن کنترل کنید.برای جستجو کنترل FindViewById فراخوانی کنید و resource ID از کنترل را وارد کنید:
EditText phoneNumberText = FindViewById< EditText >(Resource.Id.PhoneNumberText); Button translateButton = FindViewById< Button >(Resource.Id.TranslateButton); TextView translatedPhoneWord = FindViewById< TextView >(Resource.Id.TranslatedPhoneWord);