Skip to content

Commit

Permalink
Add Splash screen + adopt fix for bottom navigation view for MainFrag…
Browse files Browse the repository at this point in the history
…ment + add new tab
  • Loading branch information
PStrelchenko committed Aug 15, 2020
1 parent 56a7894 commit c35f738
Show file tree
Hide file tree
Showing 42 changed files with 437 additions and 396 deletions.
55 changes: 1 addition & 54 deletions app/src/main/java/com/aaglobal/jnc_playground/RootActivity.kt
@@ -1,59 +1,6 @@
package com.aaglobal.jnc_playground

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.LiveData
import androidx.lifecycle.Observer
import androidx.navigation.NavController
import androidx.navigation.ui.setupActionBarWithNavController
import com.aaglobal.jnc_playground.extensions.setupWithNavController
import com.google.android.material.bottomnavigation.BottomNavigationView

class RootActivity : AppCompatActivity() {

private var currentNavController: LiveData<NavController>? = null


override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_root)
if (savedInstanceState == null) {
setupBottomNavigationBar()
} // Else, need to wait for onRestoreInstanceState
}

override fun onRestoreInstanceState(savedInstanceState: Bundle) {
super.onRestoreInstanceState(savedInstanceState)
// Now that BottomNavigationBar has restored its instance state
// and its selectedItemId, we can proceed with setting up the
// BottomNavigationBar with Navigation
setupBottomNavigationBar()
}

/**
* Called on first creation and when restoring state.
*/
private fun setupBottomNavigationBar() {
val bottomNavigationView = findViewById<BottomNavigationView>(R.id.bottom_nav)

val navGraphIds = listOf(R.navigation.home_nav_graph, R.navigation.dashboard_nav_graph, R.navigation.notifications_nav_graph)

// Setup the bottom navigation view with a list of navigation graphs
val controller = bottomNavigationView.setupWithNavController(
navGraphIds = navGraphIds,
fragmentManager = supportFragmentManager,
containerId = R.id.nav_host_container,
intent = intent
)

// Whenever the selected controller changes, setup the action bar.
controller.observe(this, Observer { navController ->
setupActionBarWithNavController(navController)
})
currentNavController = controller
}

override fun onSupportNavigateUp(): Boolean {
return currentNavController?.value?.navigateUp() ?: false
}
}
class RootActivity : AppCompatActivity(R.layout.activity_root)

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

@@ -0,0 +1,60 @@
package com.aaglobal.jnc_playground.ui.main

import android.os.Bundle
import android.view.View
import androidx.fragment.app.Fragment
import androidx.lifecycle.LiveData
import androidx.navigation.NavController
import com.aaglobal.jnc_playground.R
import com.aaglobal.jnc_playground.extensions.setupWithNavController
import kotlinx.android.synthetic.main.fragment_main.*

/**
* Main fragment -- container for bottom navigation
*/
class MainFragment : Fragment(R.layout.fragment_main) {

private var currentNavController: LiveData<NavController>? = null


override fun onViewStateRestored(savedInstanceState: Bundle?) {
super.onViewStateRestored(savedInstanceState)
// Now that BottomNavigationBar has restored its instance state
// and its selectedItemId, we can proceed with setting up the
// BottomNavigationBar with Navigation
setupBottomNavigationBar()
}


override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
if (savedInstanceState == null) {
setupBottomNavigationBar()
}
}


/**
* Called on first creation and when restoring state.
*/
private fun setupBottomNavigationBar() {
val navGraphIds = listOf(
R.navigation.search__nav_graph,
R.navigation.favorites__nav_graph,
R.navigation.responses__nav_graph,
R.navigation.profile__nav_graph
)

// Setup the bottom navigation view with a list of navigation graphs
val controller = fragment_main__bottom_navigation.setupWithNavController(
navGraphIds = navGraphIds,
fragmentManager = requireActivity().supportFragmentManager,
containerId = R.id.fragment_main__nav_host_container,
intent = requireActivity().intent
)

currentNavController = controller
}


}

This file was deleted.

This file was deleted.

@@ -0,0 +1,27 @@
package com.aaglobal.jnc_playground.ui.splash

import android.os.Bundle
import android.view.View
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.lifecycle.Observer
import androidx.navigation.fragment.findNavController
import com.aaglobal.jnc_playground.R


class SplashFragment : Fragment(R.layout.fragment_splash) {

private val splashViewModel: SplashViewModel by viewModels()


override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

splashViewModel.isInProgress.observe(viewLifecycleOwner, Observer { isInProgress ->
if (isInProgress.not()) {
findNavController().navigate(R.id.action__SplashFragment__to__MainFragment)
}
})
}

}
@@ -0,0 +1,26 @@
package com.aaglobal.jnc_playground.ui.splash

import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch


class SplashViewModel : ViewModel() {

private val _isInProgress = MutableLiveData(true)

val isInProgress: LiveData<Boolean> = _isInProgress


init {
// Add special delay for splash screen
viewModelScope.launch {
delay(2000L)
_isInProgress.value = false
}
}

}
@@ -0,0 +1,8 @@
package com.aaglobal.jnc_playground.ui.tabs.favorites

import androidx.fragment.app.Fragment
import com.aaglobal.jnc_playground.R


class FavoritesContainerFragment : Fragment(R.layout.fragment_favorites_container) {
}
@@ -0,0 +1,8 @@
package com.aaglobal.jnc_playground.ui.tabs.profile

import androidx.fragment.app.Fragment
import com.aaglobal.jnc_playground.R


class ProfileContainerFragment : Fragment(R.layout.fragment_profile_container) {
}
@@ -0,0 +1,8 @@
package com.aaglobal.jnc_playground.ui.tabs.responses

import androidx.fragment.app.Fragment
import com.aaglobal.jnc_playground.R


class ResponsesContainerFragment : Fragment(R.layout.fragment_responses_container) {
}
@@ -0,0 +1,8 @@
package com.aaglobal.jnc_playground.ui.tabs.search

import androidx.fragment.app.Fragment
import com.aaglobal.jnc_playground.R


class SearchContainerFragment : Fragment(R.layout.fragment_search_container) {
}

0 comments on commit c35f738

Please sign in to comment.