آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

طبقه بندی موضوعی

Navigation Component

جمعه, ۳۰ آبان ۱۳۹۹، ۰۴:۵۹ ق.ظ

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

نویگیشن کامپوننت دارای سه قسمت است:

1. Navigation graph: این قسمت یک فایل XML بوده و شامل Destination و Action می باشد.

 

- Destination: هر فرگمنتی که کاربر میتونه به اونجا بره.

- Action: مسیر رفت و آمد بین Destinationها.

 

برای ساخت این فایل که بصورت گرافیکی هست، در قسمت ریسورس یک دایرکتوری برای navigation میسازیم.

 

2. NavHost: کانتینر برای Destinationها. معمولا از ویوی fragment استفاده میشه ولی توی داکیومنت های اندروید از androidx.fragment.app.FragmentContainerView استفاده کرده. منم اینو گذاشتم ولی توی صفحه navigation graph به عنوان Host نمیشناسه. سرچ کردم احتمالا باگه و در نهایت از همون fragment استفاده کردم.

 

3. NavController: کنترل کننده نویگیشن ها. کد به این صورت هست (از سایت اندروید):

 

 // File: HomeFragment.java
 public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
   // For example purposes, assume our layout created in onCreateView has a Button
   // that should navigate the user to a destination
   Button b = view.findViewById(R.id.view_details);

   b.setOnClickListener(v -> {
       // Retrieve the NavController from any View within a NavHost توضیح در پایین
       NavController navController = Navigation.findNavController(v);
       navController.navigate(R.id.details));
   }

   // Or use the convenience method in Navigation to combine the previous steps
   b.setOnClickListener(Navigation.createNavigateOnClickListener(R.id.details));
 }
 

توضیح:

ما به جای ویو میتونیم ویوی inflate شده در فرگمنت یا حتی یکی از ویوها که در کانتینر قرار میگیره (مثلا مثل باتن) رو پاس بدیم. مثل کد بالا.

 

در آرگومان 

 navController.navigate(R.id.details));

آی دی اکشن رو پاس میدیم.

 

از روش دوم خوشم نمیاد :|

 

انیمیشن برای وارد شدن و خارج شدن فرگمنت :

میتوان برای ورود و خروجی هر فرگمنت و یا ورود و خروج فرگمنت پاپ شده انیمیشن تعریف کرد و از طریق اتریبیوت های زیر در تگ action آن را اضافه کرد.

 

- enterAnim

- exitAnim

- popEnterAnim

- popExitAnim

 

بحث safe args هم هست که من فعلا بهش نیازی نداشتم.

 

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

 

آموزش نویگیشن کامپوننت - 1

 

آموزش نویگیشن کامپوننت - 2

 

آموزش نویگیشن کامپوننت - 3

 

آموزش نویگیشن کامپوننت - سایت اندروید

 

 

موافقین ۰ مخالفین ۰ ۹۹/۰۸/۳۰
میم دال

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی