مقداردهی اجزا
در قدم بعدی تشکیل داد منوی کشویی در اندروید قصد داریم دفعههای DrawerLayout و ActionBarDrawerToggle را مقداردهی کنیم. این مقداردهی باطن مشی طراحی اپلیکیشن در مشهد ()onCreate در فولدر MainActivity.kt جاری ساختن مییابد.
کلیک نمائید
1import android.content.res.Configuration
2import android.Operating System.Bundle
3import android.support.v4.widget.DrawerLayout
4import android.support.v7.app.ActionBarDrawerToggle
5import android.support.v7.app.AppCompatActivity
6import android.support.v7.widget.Toolbar
7import android.view.MenuItem
8
9class MainActivity : AppCompatActivity() {
10
11 private lateinit var drawer: DrawerLayout
12 private lateinit var toggle: ActionBarDrawerToggle
13
14 override fun onCreate(savedInstanceState: Bundle?) {
15 super.onCreate(savedInstanceState)
16 setContentView(R.layout.activity_main)
17
18 val toolbar: Toolbar = findViewById(R.id.toolbar_main)
19 setSupportActionBar(toolbar)
20
21 drawer = findViewById(R.id.drawer_layout)
22
23 toggle = ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close)
24 drawer.addDrawerListener(toggle)
25 supportActionBar?.setDisplayHomeAsUpEnabled(true)
26 supportActionBar?.setHomeButtonEnabled(true)
27 }
28
29 // ...
30}
مشاهده بی نقص کدها
سیاق ActionBarDrawerToggle آیکون نرم افزار را تهیه و تنظیم مینماید که در سمت چپ اکشن توشه یا این که نوار ابزار قراردارد و به خواسته گشوده و بسته کردن منوی کشویی استعمال میگردد. برای این که بتوانیم دفعهای از تولید کنیم بایستی پارامترهای ذیل را عرضه کنیم:
یک کانتکست والد – برای مثال در یک اکتیویتی می بایست از this استعمال کنیم، در حالی که در یک فرگمان بایستی ()getActivity را فراخوانی کنیم.
یک نوبت از ویجت DrawerLayout که به ActionBar اکتیویتی لینک و پیوند مییابد.
آیکون که در روی آیکون نرم افزار قرار می گیرد تا علامتدهنده دوحالتی بودن آن باشد.
منبع حرفهها برای عملیات گشوده و بسته کردن جهت کاربردپذیری
ما مشی ()addDrawerListener را روی یک DrawerLayout احضارکردهایم و از این رو ActionBarDrawerToggle به یک DrawerLayout وصل گردیده است. اعتنا فرمایید که ما آیکون نرم افزار را از روش ()setHomeButtonEnabled نیز فعال کردهایم و آن را برای ناوبری به سمت بالا از روش با استعمال از ()setDisplayHomeAsUpEnable فعال نمودهایم.
بعد از آن متدهای کالبک اکتیویتی ()onPostCreate() onConfigurationChanged و ()onOptionsItemSelected را در حین گشوده و مسدود شدن ارسال می کنیم:
1class MainActivity : AppCompatActivity() {
2
3 // ...
4
5 override fun onPostCreate(savedInstanceState: Bundle?) {
6 super.onPostCreate(savedInstanceState)
7 toggle.syncState()
8 }
9
10 override fun onConfigurationChanged(newConfig: Configuration?) {
11 super.onConfigurationChanged(newConfig)
12 toggle.onConfigurationChanged(newConfig)
13 }
14
15 override fun onOptionsItemSelected(item: MenuItem?): Boolean {
16 if (toggle.onOptionsItemSelected(item)) {
17 return true
18 }
19 return super.onOptionsItemSelected(item)
20 }
21}
مشاهده بدون نقص کدها
در کد فوق ()syncState شغل های تحت را جاری ساختن میدهد:
شرایط نشانگر منوی کشویی که با DrawerLayout لینک یافته را همگامسازی مینماید. این اسلوب می بایست از روال onPostCreate اکتیویتی احضار گردد تا موقعیت دفعه DrawerLayout که بازیابی گردیده، همگامسازی گردد و هر وهله دیگر که وضعیت طوری تغییر تحول یافت که ActionBarDrawerToggle آگاه نشد نیز می بایست از آن استفاده نمود.
آزمایش کردن نرم افزار
دراین مرحله میتوانیم نرم افزار خویش را جاری ساختن کنیم:
چنان که می بینید، با جاری ساختن کردن نرم افزار، آیکون منوی کشویی همبرگری در اکشن توشه ظواهر می گردد. در حالتی که روی این آیکون بزنید سلف سرویس گردد. همچنان با کیک کردن روی موردهای منو هیچ اتفاقی نمیافتد. این زمینه را در نصیب آتی حل میکنیم.
رئیس رویدادهای کلیک
اینک به نظارت روش مدیر رویدادهای کلیک موردها در تشکیل داد منوی کشویی در اندروید می پردازیم. اعتنا نمائید که کلیک کردن روی هر گزینه شمارا به یک اکتیویتی یا این که فرگمان تازه میبرد و به همین عامل میباشد که آن را منوی ناوبری نیز میخوانند.
آغاز اکتیویتی شما می بایست NavigationView.OnNavigationItemSelectedListener را پیادهسازی نماید:
1class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {
2 // ...
3}
با پیادهسازی این کنتراکت یا این که اینترفیس، در حال حاضر می بایست صرفا مشی ()onNavigationItemSelected را اُورراید کنیم:
1class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {
2
3 // ...
4
5 override fun onNavigationItemSelected(item: MenuItem): Boolean {
6
7 when (item.itemId) {
8 R.id.nav_item_one -> Toast.makeText(this, "Clicked item one", Toast.LENGTH_SHORT).show()
9 R.id.nav_item_two -> Toast.makeText(this, "Clicked item two", Toast.LENGTH_SHORT).show()
10 R.id.nav_item_three -> Toast.makeText(this, "Clicked item three", Toast.LENGTH_SHORT).show()
11 R.id.nav_item_four -> Toast.makeText(this, "Clicked item four", Toast.LENGTH_SHORT).show()
12 }
13 return true
14 }
15}
مشاهده بدون نقص کدها
این مشی هنگامی فراخوانی میگردد که یک مورد در منوی کشویی تعیین گردیده باشد. ما از عبارت when برای اجرای اکشنهای متفاوت روی گزینه منو در طی کلیک شدن به کار گیری می کنیم. شناسههای گزینه منو تحت عنوان محتوای عبارت when استعمال میگردند.
درپی بایستی NavigationView را مقداردهی کرده و مستمع را باطن سیاق ()onCreate اکتیویتی تهیه کنیم:
1class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {
2 // ...
3 override fun onCreate(savedInstanceState: Bundle?) {
4 // ...
5 val navigationView: NavigationView = findViewById(R.id.nav_view)
6 navigationView.setNavigationItemSelectedListener(this)
7 // ...
8 }
9// ...
اکنون نرم افزار را مجدد انجام میکنیم:
وقتی که روی بعضی موردها کلیک می کنیم، یک پیام توست اکران مییابد که دقیقاً مبتنی بر انتظار ما میباشد، ولی به خیال بسپارید که کلیک کردن یک مورد می بایست از سوی مخاطب بایستی منتهی به تشکیل داد یک اکتیویتی یا این که فرگمان تازه خواهد شد.
احتمالاً متوجه گردیدهاید که زمانی روی یک مورد کلیک می کنید، منوی کشویی همچنان گشوده میماند. خوب میباشد این منو در طی کلیک شدن یک مورد به صورت خود کار بسته گردد. نحوه اجرا این شغل اینگونه میباشد:
1override fun onNavigationItemSelected(item: MenuItem): Boolean {
2
3 when (item.itemId) {
4 R.id.nav_item_one -> Toast.makeText(this, "Clicked item one", Toast.LENGTH_SHORT).show()
5 R.id.nav_item_two -> Toast.makeText(this, "Clicked item two", Toast.LENGTH_SHORT).show()
6 R.id.nav_item_three -> Toast.makeText(this, "Clicked item three", Toast.LENGTH_SHORT).show()
7 R.id.nav_item_four -> Toast.makeText(this, "Clicked item four", Toast.LENGTH_SHORT).show()
8 }
9 drawer.closeDrawer(GravityCompat.START)
10 return true
11}
برای بستن منو بعد از کلیک شدن مورد کافی میباشد اسلوب ()closeDrawer را روی یک نوبت از DrawerLayout فرا بخوانید و GravityCompat.START را به سیاق ارسال فرمائید. اکنون در شرایطیکه نرم افزار را مجدداً ایفا نمایید فیض را می بینید.
رئیس دکمه رجوع
وقتی که منوی کشویی در اندروید گشوده میگردد از حیث تجارب کاربری خوب میباشد که اکتیویتی مهم در طول فشرده شدن دکمه برگشت بسته نشود. نرم افزارهای دوستداشتنی مانند اینباکس گوگل اینگونه فعالیت مینمایند.
کلیک فرمائید
بدین ترتیب وقتی که منوی کشویی گشوده میباشد در صورتی دکمه برگشت تلفن همراه زده خواهد شد فقط منوی کشویی بسته میشود و اکتیویتی مهم گشوده میماند. آنگاه در حالتیکه مخاطب مجدد دکمه رجوع و برگشت را بزنید این توشه اکتیویتی اساسی بایستی بسته گردد. نحوه ایفا این شغل اینگونه میباشد:
1override fun onBackPressed() {
2 if (drawer.isDrawerOpen(GravityCompat.START)) {
3 drawer.closeDrawer(GravityCompat.START)
4 } else {
5 super.onBackPressed()
6 }
7}
پروژه را مجدد ایفا کرده و این قضیه را آزمایش نمائید.
به کارگیری از پوستههای اندروید استودیو
اینک که با API-های منوی کشویی آشنا شدید، یک روش میانبر نشانه می دهیم که نوبت سپس منوی کشویی را سریعخیس بساید. بدین خواسته می توانید تنهاً از یک پوسته به مکان تشکیل داد اکتیویتی منوی کشویی از صفر به کارگیری نماید.
اندروید استودیو پوستههای مختلفی ارائه نموده است که از شایسته ترین منشهای پیاده سازی و گسترش منتفع میباشند. این فالیهای کد جان دار به ایجاد کرد سریعخیس پروژهها یاری مینمایند. یکی این پوستهها که می توانید به کارگیری فرمائید ایجاد کرد اکتیویتی منوی کشویی میباشد. بهاین مراد در اندروید استودیو یک پروژه نو ساخت و ساز فرمایید.
اسم نرم افزار را وارد کرده و روی Next کلیک نمایید.
مقادیر پیشفرض جان دار در دیالوگ Target Android Devices را دستکاری نکنید و مجدد روی Next کلیک فرمائید.
در دیالوگ Add an Activity to Mobile به سمت ذیل اسکرول کرده و آیتم Drawer Activity. را گزینش نمائید. مجدد Next را بزنید.
در دیالوگ انتها میتوانید اسم اکتیویتی، اسم لیآوت یا این که تیتر آن را در شکل میل عوض فرمایید. در غایت روی دکمه Finish کلیک فرمایید تا همگی تنظیماتها تأیید شوند. فعلا اندروید استودیو به شما امداد مینماید تا یک اکتیویتی منوی کشویی ساخت و ساز فرمایید.
اما ما پیشنهاد می کنیم که کد این اکتیویتی را تماما تحقیق فرمایید. شما میتوانید این پوسته را به یک پروژه مو جود اندروید استودیو نیز اضافه کتید. کافی میباشد به منوی File > New > Activity > Navigation Drawer Activity بروید.
پوستههایی که یاروهمدم اندروید استودیو میایند، برای لیآوتهای بی آلایش و ایجاد کرد نرم افزارهای ابتدایی مطلوب میباشند، ولی در حالتیکه میخواهید نرم افزار خویش را بیشتر بسط دهید می بایست شغل های بیشتری اجرا دهید. این پوستهها برای توسعه و گسترشدهندگان مجرب مزیت بزرگی محسوب میگردند و در طی آن ها صرفهجویی مینماید. براین اساس بسطدهندگان میتوانند زحمت تشکیل داد یک نرم افزار از صفر را کاهش داده و روی جوانبی از نرم افزار تمرکز نمایند که مخصوص میباشند و امکان سفارشیسازی را داراهستند.
کلام آخری
درین راهنما با طریق ایجاد کرد منوی کشویی در اندروید با استعمال از API-های DrawerLayout و NavigationView از صفر آشنا شدید. همینطور شیوه تشکیل داد سریع و آسا این منوها را با به کارگیری از پوستههای اندروید استودیو آموختیم.

معایب سبک ایده پردازی و فروش آن و درآمد از اندروید