آموزش رایگان ساخت منو در اندروید استودیو

منو در اندروید

منوها جزء مشترک رابط کاربر در بسیاری از انواع برنامه ها هستند. برای ارائه یک رابط کاربر مناسب و سازگار با کاربر، باید از API های منو در اندروید برای ارائه فعالیت های کاربر و سایر گزینه ها در فعالیت های خود استفاده کنید.

با شروع (Android 3.0 (API level 11، دستگاه های اندرویدی دیگر نیازی به ارائه یک دکمه منو اختصاصی ندارند.

اگر چه طراحی و تجربه کاربر برای برخی از آیتم های منو تغییر کرده است، معانی تعریف مجموعه ای از اقدامات و گزینه ها هنوز بر اساس API های منو است. سه نوع اساسی از منو در اندروید شامل موارد زیر هستند:

1 – Options menu and app bar

این منو (option menu)،از منو های اصلی اندروید محسوب می شود، و در مواردی مثل تنظیمات، جستجو، حذف آیتم و غیره استفاده می شود،در اینجا، ما میریم برای دیدن دو نمونه از منوهای گزینه اول، منوی گزینه ساده و دوم، منوی گزینه با تصاویر.

2 – Context menu and contextual action mode

یک منوی زمینه یک منوی شناور است که زمانی که کاربر یک کلیک طولانی روی یک عنصر انجام می دهد ظاهر می شود.

منو اندروید

3 – Popup menu

منوی پاپ آپ(PopupMenu) یکی از انواع منو در اندروید است که از اندروید API Level 11 اضافه شده است و به ما این امکان را می دهد که در هر جایی از برنامه که بخواهیم منوی popup باز کنیم.

Popup menu اندروید

تعریف منو در اندروید (XML)

برای همه انواع منو در اندروید ، Android یک قالب استاندارد XML را برای تعریف کردن آیتم های منو فراهم می کند. به جای ایجاد یک منو در کد اکتیویتی  شما، شما باید یک منو و تمام موارد آن را در یک منبع منوی XML تعریف کنید. پس از آن می توانید منابع منو را (به عنوان یک شیء منو بارگذاری کنید) در اکتیویتی یا فرگمنت خود استفاده کنید.

با استفاده از یک resource برای منو ها، دارای مزیت هایی است:

1 – ساختار منو در XML آسان تر است.

2 – این کدهای اعمال شده بر روی منو هارا از برنامه شما جدا می کند.

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

برای تعریف منو، یک فایل XML در داخل مسیر res / menu /   پروژه ایجاد کنید موارد زیر را به آن اضافه کنید:

android:id

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

android:icon

گزینه ای  برای drawable برای استفاده  از آیکون برای گزینه های منو.

android:title

ارجاع به یک رشته برای استفاده به صورت عنوان.

android:showAsAction

تعیین می کند که چه زمانی و چگونه این آیتم در نوار تولبار ظاهر گردد.

این ها مهمترین ویژگی هایی هستند که باید استفاده کنید، اما تعداد زیادی دیگر نیز موجود است. برای اطلاعات در مورد تمام ویژگی های پشتیبانی شده، به منبع مراجعه کنید.

شما می توانید برای هر منو یک زیر منو ایجاد کنید:

ایجاد Options Menu

Options Menu جایی است که شما باید اقدامات و گزینه های دیگری را ، مانند “جستجو”، “نوشتن ایمیل” و “تنظیمات” را اعمال کنید.

جایی که گرینه ها  در منوی شما بر روی صفحه نمایش ظاهر می شود به نسخه ی Api  برنامه شما بستگی دارد.

1 – اگر برنامه خود را برای (Android 2.3.x (API level 10 یا پایین تر توسعه داده اید، محتویات گزینه های منو در پایین صفحه هنگامی که کاربر فشار دکمه منو را فشار می دهد، همانطور که در شکل 1 نشان داده شده است، ظاهر می شود. بخش اول نمایش آیکون منو است که تا شش آیتم منو نگه می دارد. اگر منو شما شامل بیش از شش مورد باشد، Android شش مورد را قرار می دهد و بقیه را به منوی سرریز منتقل می کند، که کاربر می تواند آن را با انتخاب More باز کند.

ایجاد Options Menu

2 – اگر برنامه خود را برای Android 3.0 (سطح API 11) و بالاتر ارتقا دهید، مواردی از منوی گزینه ها در نوار برنامه در دسترس هستند. به طور پیشفرض، سیستم همه گزینه های منو را به کاربر نمایش می دهد (یا با فشار دادن دکمه Menu دستگاه، در صورت موجود بودن) نشان داده شود. برای فعال کردن این مورد باید در قسمت منو ایتم را برابر showAsAction = “ifRoom” قرار دهید.

در صورت لزوم، شما می توانید گزینه های  منو را با ویژگی android: orderInCategory در هر مورد <item> که نیاز دارید حرکت دهید.

برای مشخص کردن گزینه های منو برای یک اکتیویتی () overCreateOptionsMenu  را بکار ببرید. در این روش، می توانید منابع منوئی (تعریف شده در XML) را به منوی مورد نظر اضافه کنید. مثلا:

شما می توانید با اضافه کردن () و اضافه کردن آیتم های منو را با ()findItem  برای تغییر خواص خود با API های MenuItem اضافه کنید.

اگر برنامه خود را برای آندروید 2.3 و پایین تر توسعه داده اید، سیستم با استفاده از () onCreateOptionsMenu  برای ایجاد برای ایجاد گزینه های منو استفاده می کند. اگر برای آندروید 3.0 و بالاتر توسعه داده شده است، سیستم در هنگام شروع اکتیویتی، برای نمایش منو در نوار تولبار، () onCreateOptionsMenu  را فراخوانی می کند.

هندل کردن click events

هنگامی که کاربر یک آیتم را از منوی گزینه ها (از جمله آیتم هایی در نوار برنامه انتخاب می کند)، سیستم متد () onOptionsItemSelected  را فراخوانی می کند. این متد MenuItem را انتخاب می کند. شما می توانید با دریافت getItemId ()، شناسه منحصر به فرد را برای آیتم منوی خود را مشخص کنید. شما می توانید این شناسه را در مقابل آیتم های منو شناخته شده مطابقت دهید تا عمل مناسب انجام شود. مثلا:

اگر اکتیویتی شما شامل فرگمنت  باشد، سیستم برای اولین بار () onOptionsItemSelected را برای هر اکتیویتی و سپس برای هر فرگمنت را صدا می زند.

ایجاد Contextual Menus

یک  Contextual Menus اقداماتی را انجام می دهد که بر روی یک مورد خاص در زمینه UI تاثیر می گذارد. شما می توانید Contextual Menus را برای هر نمایه ایجاد کنید، اما اغلب آنها برای ListView، GridView یا مجموعه های  دیگر استفاده می شوند.

دو راه برای ارائه Contextual Menus وجود دارد:

1 – زمانی که کاربر از Long Click استفاده میکند.یعنی برای مدت طولانی روی شئی مورد نظر را لمس میکند.

2 – در این حالت Contextual Menus حالت ActionMode است که در نوار تولبار به نمایش در می اید.این حالت در Android 3.0 (API level 11) فعال می باشد.

ایجاد floating context menu

برای ارائه یک floating context menu:

1 – نمایش منو با فراخوانی () registerForContextMenu  برای مرتبط ساختن ListView یا GridView

2 – استفاده از متد () onCreateContextMenu  در Activity یا Fragment خود.

MenuInflater به شما امکان می دهد که context menu را از یک منبع منو بگیرید. پارامترها شامل عبارت View که کاربر انتخاب کرده و یک شی ContextMenu.ContextMenuInfo است که اطلاعات اضافی در مورد گزینه انتخاب شده را فراهم می کند. اگر اکتیویتی شما دارای View های مختلف است که هر کدام یک ContextMenuInfo متفاوتی را ارائه می دهند، می توانید از این پارامترها برای تعیین ContextMenuInfo استفاده کنید.

3 – پیاده سازی () OnContextItemSelected

متد () getItemId  شناسه مربوط به آیتم منو انتخاب شده را نمایش می دهد که شما باید به هر مورد منو در XML با استفاده از ویژگی android: id یک شناسه اختصاص دهید،

استفاده از contextual action mode

contextual action mode  پیاده سازی سیستم ActionMode است که تعامل کاربر را با ContextMenu بر قرار می کند.وقتی که کاربر انرا فعال و یکی از گزینه های منو را انتخاب می کند contextual action bar برای نشان دادن اقداماتی که کاربر می تواند به آنها دسترسی داشته باشد، در بالای صفحه نمایش داده می شود. در حالی که این حالت فعال است، کاربر می تواند چندین مورد را انتخاب کند

برای views هایی که contextual actions را ارائه می دهند، معمولا باید contextual action mode را بر روی یکی از دو رویداد (یا هر دو) اعمال می کند:

 1 – با استفاده از long-click

2-  هنگامی که کاربر یک کامپوننت را در نمایه انتخاب می کند.

فعال کردن contextual action mode برای نمایشهای شخصی

اگر می خواهید contextual action mode را فقط زمانی که کاربر نمایش های خاص را انتخاب می کند نشان دهید، باید:

1 – پیاده سازی متد  ActionMode.Callback

2 – صدا زدن متد () startActionMode

برای مثال :

اجرای متد  ActionMode.Callback:

توجه داشته باشید که این callbacks تقریبا دقیقا مشابه callbacks برای گزینه  های منوی است، به جز هر یک از این نیز شی ActionMode مرتبط با رویداد منتقل می شود. شما می توانید از ActionMode API ها برای تغییرات مختلف در CAB استفاده کنید، مانند () setTitle  و () setSubtitle  .

2 – صدا زدن متد () startActionMode

صدا زدن () startActionMode  برای فعال کردن contextual action mode وقتی که از long-click استفاده می کنید:

فعال کردن contextual actions در یک ListView یا GridView

اگر مجموعه ای از آیتم ها در ListView یا GridView (یا AbsListView) داشته باشید و می خواهید به کاربران اجازه دهید که اقدامات دسته ای انجام دهد، باید:

1 – اجرای متد AbsListView.MultiChoiceModeListener

2 – صدا زدن متد  ()  call setChoiceMode با آرگومان CHOICE_MODE_MULTIPLE_MODAL.

برای مثال :

حال وقتی کاربر یک کامپوننت را با یک کلیک طولانی را انتخاب می کند، سیستم متد () onCreateActionMode  را فراخوانی می کند.

ایجاد Popup Menu

منوی پاپ آپ(PopupMenu) یکی از انواع منو در اندروید است که از اندروید API Level 11 اضافه شده است و به ما این امکان را می دهد که در هر جایی از برنامه که بخواهیم منوی popup باز کنیم. برای آشنایی بهتر با Popup Menu یه مثال ساده طراحی می کنیم.

اگر منوی خود را در XML تعریف میکنید، در اینجا نحوه نمایش popup menu  را نشان می دهیم:

به عنوان مثال، در اینجا یک دکمه با استفاده از قابلیت : onClick attribute که یک منوی پنجره را نشان می دهد:

و برای نمایش popup menu باید کد زیر را به اکتیویتی خود اضافه  کنید:

بررسی click events

در اینجا وقتی کاربر یکی از گزینه های منو را انتخاب می کند شما باید از متد های PopupMenu.OnMenuItemClickListener و ()  setOnMenuItemclickListener استفاده کنید.

برای مثال :

بررسی Menu Groups

یک گروه منو در اندروید مجموعه ای از آیتم های منو است که ویژگی های خاصی را به اشتراک می گذارند. با یک گروه میتوانید:

1 – نمایش یا پنهان کردن همه موارد با  () setGroupVisible

2 – همه آیتم ها را با () setGroupEnabled  فعال یا غیرفعال کنید

3 – مشخص کنید که آیا تمام موارد با () setGroupCheckable  قابل بررسی است

استفاده از checkable menu items

میتوان برای گزینه های منو حالت هایی با استفاده از checkbox و یا radio buttons قرار داد مانند شکل زیر :

شما در این جور مواقع می توانید از قابلیت android:checkable و یا android:checkableBehavior استفاده کنید.

Single : فقط یک مورد از گروه را می توان بررسی کرد (دکمه های رادیویی)

All : همه اقلام را می توان چک کرد (checkboxes)

None : هیچ آیتمی قابل بررسی نیست

هنگامی که یک انتخاب می شود، سیستم متد (مانند () onOptionsItemSelected) صدا  می زند.و شما در این قسمت باید وضعیت کلیک خود را مشخص کنید. مثلا:

اضافه کردن آیتم های منو در اندروید بر اساس Intent

گاهی اوقات شما می توانید از Intent در منوی خود به صورت زیر استفاده کنید

برای اضافه کردن آیتم های منو در اندروید بر اساس فعالیت های موجود برای Intent:

1 – تعریف کردن intent با استفاده از CATEGORY_ALTERNATIVE یا CATEGORY_SELECTED_ALTERNATIVE

2 – فراخوانی متد () Menu.addIntentOptions

توجه: CATEGORY_SELECTED_ALTERNATIVE برای مدیریت آیتم که در حال حاضر انتخاب شده در صفحه استفاده می شود. بنابراین، آن را فقط باید هنگام ایجاد یک منو در () onCreateContextMenu  استفاده کنید.

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

درباره ShopDroid

فروشگاه توسعه دهندگان موبایل شاپ دروید با بیش از 7 سال سابقه مفتخر است که اولین و بهترین فروشگاه سورس می باشد

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *