Sfoglia il codice sorgente

add listener for navigationview in main UI

MrOzOn 5 anni fa
parent
commit
1183d669af

+ 26 - 15
app/src/main/java/com/mrozon/healthdiary/presentation/main/MainActivity.kt

@@ -1,18 +1,15 @@
 package com.mrozon.healthdiary.presentation.main
 
-import android.annotation.SuppressLint
 import android.os.Bundle
-import android.view.View
+import android.view.MenuItem
 import android.widget.ImageView
 import android.widget.TextView
 import androidx.activity.viewModels
-import androidx.appcompat.app.AppCompatActivity
+import androidx.core.app.ShareCompat
 import androidx.core.view.GravityCompat
-import androidx.databinding.DataBindingUtil
 import androidx.drawerlayout.widget.DrawerLayout
 import androidx.drawerlayout.widget.DrawerLayout.LOCK_MODE_LOCKED_CLOSED
 import androidx.drawerlayout.widget.DrawerLayout.LOCK_MODE_UNLOCKED
-import androidx.fragment.app.viewModels
 import androidx.lifecycle.Observer
 import androidx.lifecycle.ViewModelProvider
 import androidx.navigation.NavController
@@ -20,18 +17,18 @@ import androidx.navigation.findNavController
 import androidx.navigation.ui.AppBarConfiguration
 import androidx.navigation.ui.navigateUp
 import androidx.navigation.ui.setupActionBarWithNavController
+import com.google.android.material.navigation.NavigationView
 import com.mrozon.core_api.providers.AppWithFacade
-import com.mrozon.feature_splash.di.SplashFragmentComponent
-import com.mrozon.feature_splash.presentation.SplashFragmentViewModel
 import com.mrozon.healthdiary.R
 import com.mrozon.healthdiary.databinding.ActivityMainBinding
-import com.mrozon.healthdiary.di.main.DaggerMainActivityComponent
 import com.mrozon.healthdiary.di.main.MainActivityComponent
 import com.mrozon.utils.base.BaseActivity
+import kotlinx.android.synthetic.main.activity_main.*
+import kotlinx.android.synthetic.main.activity_main.view.*
 import timber.log.Timber
 import javax.inject.Inject
 
-class MainActivity : BaseActivity<ActivityMainBinding>() {
+class MainActivity : BaseActivity<ActivityMainBinding>(){
 
     @Inject
     lateinit var viewModelFactory: ViewModelProvider.Factory
@@ -43,6 +40,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
     private lateinit var drawerLayout: DrawerLayout
     private lateinit var appBarConfiguration: AppBarConfiguration
     private lateinit var navController: NavController
+    private lateinit var nav_view: NavigationView
 
     override fun onCreate(savedInstanceState: Bundle?) {
         initDI()
@@ -59,9 +57,24 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
     private fun initNavigation() {
         setSupportActionBar(binding.toolbar)
         drawerLayout = binding.drawerLayout
+        nav_view = binding.navView
         navController = findNavController(R.id.nav_host_fragment)
-        appBarConfiguration = AppBarConfiguration(setOf(R.id.listPersonFragment), binding.drawerLayout)
+        appBarConfiguration = AppBarConfiguration(
+            setOf(R.id.listPersonFragment),
+            binding.drawerLayout
+        )
         setupActionBarWithNavController(navController, appBarConfiguration)
+        nav_view.setNavigationItemSelectedListener {
+            val currentDestinationId = navController.currentDestination?.id?:0
+            when(it.itemId){
+                R.id.show_person -> {
+                    if(currentDestinationId!=R.id.listPersonFragment)
+                        navController.navigate(R.id.action_global_listPersonFragment)
+                }
+            }
+            drawerLayout.closeDrawer(GravityCompat.START)
+            true
+        }
     }
 
     override fun onSupportNavigateUp(): Boolean {
@@ -80,7 +93,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
     override fun subscribeUi() {
 
         viewModel.cleared.observe(this, Observer { cleared ->
-            if(cleared){
+            if (cleared) {
                 navController.navigate(R.id.action_global_loginFragment)
             }
         })
@@ -91,14 +104,12 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
             val tvUserName = headerView.findViewById<TextView>(R.id.tvUserName)
             val ivLogout = headerView.findViewById<ImageView>(R.id.ivLogout)
 
-            if(user==null){
+            if (user == null) {
                 Timber.d("user is null")
                 supportActionBar?.hide()
                 drawerLayout.setDrawerLockMode(LOCK_MODE_LOCKED_CLOSED)
                 ivLogout.setOnClickListener(null)
-            }
-            else
-            {
+            } else {
                 Timber.d("user not null")
                 supportActionBar?.show()
                 drawerLayout.setDrawerLockMode(LOCK_MODE_UNLOCKED)

+ 5 - 0
app/src/main/res/drawable/ic_persons_24.xml

@@ -0,0 +1,5 @@
+<vector android:height="24dp" android:tint="#FFFFFF"
+    android:viewportHeight="24" android:viewportWidth="24"
+    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="@android:color/white" android:pathData="M16,11c1.66,0 2.99,-1.34 2.99,-3S17.66,5 16,5c-1.66,0 -3,1.34 -3,3s1.34,3 3,3zM8,11c1.66,0 2.99,-1.34 2.99,-3S9.66,5 8,5C6.34,5 5,6.34 5,8s1.34,3 3,3zM8,13c-2.33,0 -7,1.17 -7,3.5L1,19h14v-2.5c0,-2.33 -4.67,-3.5 -7,-3.5zM16,13c-0.29,0 -0.62,0.02 -0.97,0.05 1.16,0.84 1.97,1.97 1.97,3.45L17,19h6v-2.5c0,-2.33 -4.67,-3.5 -7,-3.5z"/>
+</vector>

+ 3 - 3
app/src/main/res/menu/navigation_menu.xml

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
 
-    <item android:id="@+id/reward_dest"
-        android:icon="@mipmap/ic_launcher"
-        android:title="@string/app_name"
+    <item android:id="@+id/show_person"
+        android:icon="@drawable/ic_persons_24"
+        android:title="@string/list_persons"
         />
 
 </menu>

+ 7 - 0
app/src/main/res/navigation/nav_graph.xml

@@ -104,4 +104,11 @@
             app:destination="@id/listPersonFragment" />
     </fragment>
 
+    <action android:id="@+id/action_global_listPersonFragment"
+        app:destination="@id/listPersonFragment"
+        app:enterAnim="@anim/slide_in_right"
+        app:exitAnim="@anim/slide_out_left"
+        app:popEnterAnim="@anim/slide_in_left"
+        app:popExitAnim="@anim/slide_out_right"/>
+
 </navigation>