مشخصات مقاله
-
886
-
0.0
-
2454
-
0
-
0
آموزش Xamarin-Hello, Android Multiscreen : بررسی عمیق
آموزش Xamarin-Hello, Android Multiscreen : بررسی عمیق
مدیریت navigation با Xamarin.Android
در این راهنمای دوقسمتی ، برنامه Phoneword را که شما در مقاله های Hello, Android ساخته اید را با ایجاد صفحه دوم گسترش می دهیم. در طول مقاله، بلوک های اصلی Android Application Building را معرفی می کند و عمیق تر به معماری اندروید می پردازد، تا شما در درک بهتر از ساختار و عملکرد برنامه Android دست پیداکنید.
Hello, Android Multiscreen : بررسی عمیق
در "Hello، Android Multiscreen Quickstart"، شما اولین برنامه "Xamarin.Android" چند صفحه ای خود را ساختید و اجرا کردید. اکنون وقت آن رسیده است تا یک درک عمیق از ناوبری و سیستم عامل Android را بسازید تا بتوانید برنامه های کاربردی پیچیده تر را ایجاد کنید.
در این راهنما به شما معماری پیشرفته تر آندروید را به عنوان Android Blocks Building Application معرفی می شود. ناوبری Android با Intents توضیح داده شده است، و گزینه های ناوبری(navigation) سخت افزاری Android مورد بررسی قرار گرفته است.کدهای جدیدی که به برنامه Phoneword اضافه شده به عنوان یک دید کلی تر از رابطه برنامه با سیستم عامل و برنامه های دیگر تجزیه می شوند.
مبانی معماری آندروید
در " Hello, Android : بررسی عمیق"، شما متوجه شدید که برنامه های آندرویدی برنامه های منحصر به فرد هستند زیرا آنها نقطه ورودی واحد ندارند. در عوض، سیستم عامل (یا برنامه دیگری) هر یک از فعالیت های ثبت شده برنامه را شروع می کند که به نوبه خود فرایند برنامه را آغاز می کند. این "بررسی عمیق" در معماری اندروید، درک شما از نحوه کاربرد برنامه های Android با معرفی Android Application Building Blocks و توابع آنها ، افزایش می دهد.
Android Application Blocks(بلوک های برنامه آندروید)
یک برنامه Android شامل مجموعه ای از کلاس های ویژه آندروید به نام " Application Blocks" هستند که همراه با تعدادی برنامه مانند " resources" - " images"، " themes"، "کلاس های helper " و غیره هستند. این ها با یک فایل XML به نام Android Manifest ادغام می شوند.
" Application Blocks" ستون فقرات برنامه های آندروید را تشکیل می دهند، زیرا آنها به شما اجازه می دهند کاری را انجام دهید که شما طبق معمول نمی توانید انجام دهید. دو تا از مهمترین آنها عبارتند Activities و Services:
- Activities: یک فعالیت (Activity) مربوط به یک صفحه نمایش با یک رابط کاربری است و از لحاظ مفهومی شبیه یک صفحه وب در یک برنامه وب است. برای مثال، در یک برنامه خبری، صفحه ورود به سیستم، اولین Activity است ، لیست scrollable از آیتم های خبری Activity دیگری خواهد بود ، و صفحه جزئیات برای هر مورد یک Activity سوم خواهد بود.
- Service: " Android Services” فعالیت هایی را از طریق برداشتن وظایف طولانی مدت و اجرای آنها در پس زمینه انجام می دهند. Service یک رابط کاربری ندارند و مورد استفاده قرار می گیرند تا وظایفی را که به صفحه نمایش ها وابسته نیستند انجام دهند ، برای مثال، پخش یک آهنگ در پس زمینه یا آپلود عکس به سرور.
یک برنامه Android ممکن است از تمام انواع Blocks استفاده نکند و اغلب دارای چندین بلوک از یک نوع است. به عنوان مثال، برنامه Phoneword از « Hello, Android Quickstart » تنها از یک « Activity » (screen) و برخی از فایلهای منبع(resource) تشکیل شده بود. یک برنامه پخش کننده موسیقی ساده ممکن است چندین فعالیت و یک سرویس برای پخش موسیقی داشته باشد وقتی که برنامه در پس زمینه باشد.
آموزش Intent در Xamarin
یکی دیگر از مفاهیم اساسی در برنامه های آندروید، Intent است. Android بر اساس اصل کمترین امتیاز طراحی شده است - برنامه های کاربردی تنها به بلوک هایی که برای کار نیاز دارند دسترسی دارند و آنها دسترسی محدود به بلوک ها را تشکیل می دهند که سیستم عامل یا برنامه های دیگر را تشکیل می دهند. به همین ترتیب، بلوک ها " loosely-coupled (غیر مستقیم)" هستند آنها طراحی شده اند تا دانش کمی از آنها داشته باشند و دسترسی به بلوک های دیگر را محدود کنند(حتی بلوک هایی که بخشی از برنامه های مشابه هستند).
برای برقراری ارتباط، " Application Blocks " پیام های نامتقارن به نام " Intents " را به عقب و جلو ارسال می کنند. Intents حاوی اطلاعاتی درباره بلوک دریافت شده و بعضی اوقات برخی از داده ها است. یک " Intent " که از یکی از برنامه های " component triggers " ارسال می شود، چیزی است که در یکی دیگر از component برنامه اتفاق می افتد، دو component برنامه را پیوند می دهد و به آنها اجازه می دهد ارتباط برقرار کنند. با ارسال "Intents" به عقب و جلو، شما می توانید Blocks را برای هماهنگ کردن اقدامات پیچیده دریافت کنید مانند راه اندازی برنامه دوربین برای عکس گرفتن و ذخیره کردن، جمع آوری اطلاعات مکان یا حرکت از یک صفحه به صفحه بعد.
AndroidManifest.XML
هنگامی که یک بلوک را به برنامه اضافه می کنید، آن را با یک فایل XML خاص به نام "Manifest Android" ثبت میکنید. "مانیفست" تمام برنامه های کاربردی " Application Blocks " ، و همچنین version requirements ، permissions و linked libraries را دنبال می کند - همه چیزهایی که سیستم عامل برای استفاده از برنامه شما و اجرای آن نیاز دارد. " Android Manifest" همچنین با " Activities" و " Intents" برای کنترل اقدامات مناسب برای یک " Activity" مشخص کار می کند. این ویژگی های پیشرفته "Android Manifest" در مقاله "کار با Android Manifest " پوشش داده شده است. در نسخه تک صفحه ای از برنامه Phoneword، تنها یک « Activity »، یک « Intent » و «AndroidManifest.xml» در کنار منابع اضافی مانند «آیکون ها» استفاده شد. در نسخه چند صفحه ای "Phoneword"، " Activity " اضافی اضافه شد؛ که آن را از اولین " Activity " با استفاده از " Intent" راه اندازی کردیم. بخش بعدی به بررسی نحوه کمک در ایجاد navigation در برنامه های آندروید می پردازد.
Android Navigation
Intents ها برای حرکت بین صفحه نمایش استفاده می شود. وقت آن است که به این کد نگاهی بیندازیم تا ببینیم چگونه « Intents » و نقش آنها را در « Android navigation» کار می کنند تا درک کنیم.
راه اندازی یک Activity دوم با Intent
در برنامه Phoneword یک "Intent" برای راه اندازی یک صفحه دوم (Activity) استفاده شد. با ایجاد یک " Intent " شروع کنید ،عبور دادن از current Context (که اشاره به current Context کنونی دارد) و نوع "Application Block" که شما دنبال آن هستید (TranslationAistoryActivity):
Intent intent = new Intent(this, typeof(TranslationHistoryActivity));
" Context" یک رابط برای اطلاعات جهانی در مورد محیط برنامه است -این اجازه می دهد اشیاء تازه ایجاد شده بدانند که چه چیزی در برنامه کاربرد دارد. اگر به یک " Intent" به عنوان یک message فکر می کنید، شما نام گیرنده " message " (TranslatorActivity) و آدرس گیرنده (Context) را فراهم می کنید.
اندروید یک گزینه برای اتصال داده های ساده به Intent فراهم می کند (داده های پیچیده به صورت متفاوتی مورد استفاده قرار می گیرند). در مثال "Phoneword" "PutStringArrayExtra" برای اتصال یک لیست از شماره تلفن به " Intent " و "StartActivity" به گیرنده " Intent" نامیده می شود. کد کامل به صورت زیر به نظر می رسد:
translationHistoryButton.Click += (sender, e) =>
{
var intent = new Intent(this, typeof(TranslationHistoryActivity));
intent.PutStringArrayListExtra("phone_numbers", _phoneNumbers);
StartActivity(intent);
};
مفاهیم اضافی معرفی شده در Phoneword
برنامه Phoneword چندین مفاهیم را که در این مقاله موجود نیست پوشش داده است. این مفاهیم عبارتند از:
- String Resources: در برنامه Phoneword، متن "TranslationHistoryButton" به “string / translationIstory@" تنظیم شده است. سینتکس "string@" بدین معناست که مقدار رشته در فایل منابع رشته، "Strings.xml" ذخیره می شود.مقدار زیر برای رشته "translationHistory" به "Strings.xml" اضافه شد:
< ?xml version="1.0" encoding="utf-8"? > < resources > < string name="translationHistory" >Call History< /string > < /resources > - ListView و ArrayAdapter: "ListView" یک جزء UI است که یک روش ساده برای ارائه "فهرست پیمایش (scrolling list)" ردیف ها فراهم می کند. مثال "ListView" نیاز به " Adapter " برای تغذیه آن با داده های موجود در ردیف " views ها"است. کدهای زیر برای پر کردن رابط کاربر TranslationAistoryActivity استفاده شد:
this.ListAdapter = new ArrayAdapter< string >(this, Android.Resource.Layout.SimpleListItem1, phoneNumbers);
"ListViews" و "Adapters" فراتر از محدوده این مقاله هستند، آنها در مقاله های دیگر به صورت مجزا پوشش داده ایم.
خلاصه
تبریک می گویم، اولین برنامه چند کاربره ی اندرویدی خود را به پایان رسانده اید!در این راهنما " Android Application Building Blocks" و "Intents" را معرفی کردیم و از آنها برای ساخت یک برنامه اندرویدی چند منظوره استفاده کردیم. شما در حال حاضر پایه محکمی دارید که لازم است شروع به توسعه برنامه های Xamarin.Android خود کنید.
در مقاله های بعدی خواهید آموخت که چگونه برنامه های cross-platform با استفاده از Xamarin ایجاد کنید.