کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش Xamarin-بررسی عمیق Hello, Android

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 است:

آموزش Xamarin

یک راه حل(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 برنامه را ایجاد می کند، کل برنامه را بارگذاری می کند:

آموزش Xamarin

از آنجایی که هیچ پیشرفت خطی(linear progression) از طریق نرم افزار Android وجود ندارد (شما می توانید برنامه را از چندین نقطه راه اندازی کنید)، آندروید یک راه منحصر به فرد برای پیگیری آنچه کلاس ها و فایل ها یک برنامه را تشکیل می دهند دارد. در مثال Phoneword، تمام قسمت هایی که نرم افزار را تشکیل می دهند با یک فایل XML خاص به نام Manifest Android شناخته می شوند. نقش Android Manifest برای پیگیری محتویات برنامه، properties ها و مجوزها و افشای آنها به سیستم عامل Android است. شما می توانید از برنامه Phoneword به عنوان یک single Activity( screen) و مجموعه ای از منابع و فایل های کمکی که با هم توسط فایل Android Manifest ادغام شده اند فکر کنید ، همانطور که در نمودار زیر نشان داده شده است:

آموزش Xamarin

چند بخش دیگر در رابطه با روابط بین بخش های مختلف برنامه Phoneword است.نمودار بالا باید درک بهتری به شما ارائه دهد. این اکتشاف با رابط کاربری(user interface) آغاز می شود، همانطور که در مورد طراحان آندروید و فایل های layout آن بحث می شود.

رابط کاربری

Main.axml فایل layout رابط کاربر برای صفحه اول در برنامه است. Axml نشان می دهد که این یک فایل طراحی آندرویید است(AXML مخفف Android XML است). نام اصلی از نقطه نظر اندرویدی دلخواه است - فایل پوسته می تواند به نام دیگری نامگذاری شده باشد. وقتی Main.axml را در IDE باز می کنید ویرایشگر، تصویری را برای فایل های layout اندروید به نام Android Designer به ارمغان می آورد:

آموزش Xamarin

در برنامه Phoneword ، ID برای دکمه Translate >> @+id/TranslateButton تنظیم شده است.

آموزش Xamarin

هنگامی که شما ویژگی 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 ببینید ، همانطور که در تصویر زیر نشان داده شده است:

آموزش Xamarin

این سورس کد 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 مرتبط را نشان می دهد:

آموزش Xamarin

با استفاده از متدهای 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);

حالا که شما references ای به کنترل ها در فایل layout دارید، می توانید برنامه های خود را برای پاسخ دادن به تعامل کاربر شروع کنید.

Responding to User Interaction(پاسخ به تعامل با کاربر)

در Android، رویداد کلیک برای لمس کاربر گوش می دهد. در این برنامه، رویداد کلیک با یک لامبدا مورد استفاده قرار می گیرد، اما delegate یا یک شناسه رویداد می تواند جایگزین آن شود.نسخه نهایی کد Translate به شرح زیر است:

translateButton.Click += (sender, e) =>
{
    // Translate user’s alphanumeric phone number to numeric
    translatedNumber = PhonewordTranslator.ToNumber(phoneNumberText.Text);
    if (string.IsNullOrWhiteSpace(translatedNumber))
    {
        translatedPhoneWord.Text = string.Empty;
    }
    else
    {
        translatedPhoneWord.Text = translatedNumber;
    }
};

تست، استقرار، و نکات تکمیلی

هر دو ویژوال استودیو برای مک و ویژوال استودیو گزینه های زیادی برای آزمایش و استقرار یک برنامه فراهم می کند. این بخش شامل گزینه های debugging ، تست برنامه ها در یک دستگاه را نشان می دهد و ابزارهایی را برای ایجاد آیکون های سفارشی برای تراکم صفحه نمایش می دهد.

ابزار Debugging

تشخیص مشکلات در کدهای برنامه مشکل است. برای کمک به تشخیص مشکلات پیچیده کد می توانیم از Breakpoint ، Step Through Code یا اطلاعات خروجی در Log Window استفاده کنیم.

گسترش کردن به یک دستگاه(Deploy to a Device)

شبیه ساز شروع خوبی برای استقرار و آزمایش یک برنامه است، اما کاربران برنامه نهایی را در یک شبیه ساز مصرف نخواهند کرد.بهترین تجربه برای آزمایش برنامه ها در یک دستگاه(device) واقعی است.

قبل از اینکه دستگاه Android بتواند برای آزمایش برنامه ها استفاده شود، باید برای توسعه آن پیکربندی شود.برای اینکار مقاله (تنظیم Device برای Development)مطالعه کنید.

پس از پیکربندی دستگاه ، شما می توانید با استفاده از plugging برنامه خودتان را گسترش(deploy)دهید ،پنجره Select Device را انتخاب کنید و برنامه را اجرا کنید.

آموزش Xamarin

این برنامه را بر روی دستگاه اجرا می کند:

آموزش Xamarin

تنظیم آیکون برای تراکم صفحه های مختلف

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

آموزش Xamarin

برای این منظور تمرین خوبی است که icons های مختلفی با resolutions های مختلف به فولدر Resources اضافه کنیم. آندروید نسخه های مختلفی از پوشه mipmap را برای اداره آیکون ها از تراکم های مختلف فراهم می کند، (mdpi) تراکم متوسط ، (hdpi) تراکم بالا ، (xhdpi, xxhdpi, xxxhdpi)برای صفحاتی که ترام بسیار بالایی دارند.

آموزش Xamarin

آندروید آیکون با تراکم مناسب را انتخاب می کند:

آموزش Xamarin

تولید آیکون های سفارشی

هر کسی یک طراح برای ایجاد آیکون های سفارشی در دسترس ندارد. در اینجا چندین روش جایگزین برای تولید آثار هنری سفارشی وجود دارد:

  • Android Asset Studio : یک ژنراتور مبتنی بر وب ، انواع آیکون های Android با پیوندهایی به سایر ابزارهای مفید را دارا است و در گوگل کروم خیلی خوب کار می کند.
  • Visual Studio : شما می توانید برای ایجاد یک آیکون ساده برای برنامه خود به طور مستقیم در IDE استفاده کنید.
  • Glyphish : مجموعه ای از آیکون های با کیفیت بالا برای دانلود و خرید رایگان است.
  • Fiverr : از میان طراحان مختلفی که برای ایجاد یک آیکون وجود دارد می توانید انتخاب کنید که از 5 دلار شروع می شود .شما می توانید از این استفاده کنید یا نکنید اما منبع بسیار خوبی برای تولید آیکن برنامه هایتان می تواند باشد.

خلاصه

تبریک!! اکنون باید درک جامعی از اجزای برنامه Xamarin.Android و همچنین ابزارهایی که برای ایجاد آن نیاز دارید داشته باشید.


برای مطالعه سرفصل آموزش جامع و عملی برنامه نویسی Android کلیک نمایید .

1396/08/16 3096 1030
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...