Added basic onboarding activity

This commit is contained in:
Arty Bishop committed 2020-11-19 15:18:14 +00:00
1 parent 64357697bd
commit 58839c3714
16 files changed
+224 -35

No files matched your search

@@ -50,7 +50,10 @@ class SharedViewModel @ViewModelInject constructor(
private var shouldTriggerCalculation = true
init {
if (prefsManager.isFirstLaunch()) updateDefaultSourcesAndEntries()
if (prefsManager.isFirstLaunch()) {
updateDefaultSourcesAndEntries()
prefsManager.setFirstLaunchDone()
}
startApplicationTimer()
}
@@ -12,11 +12,11 @@ import dagger.hilt.android.AndroidEntryPoint
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
setTheme(R.style.AppTheme)
super.onCreate(savedInstanceState)
val binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
val navHost = supportFragmentManager.findFragmentById(R.id.nav_host) as NavHostFragment
binding.navBottom.setupWithNavController(navHost.navController)
ActivityMainBinding.inflate(layoutInflater).apply {
setContentView(root)
val navHost = supportFragmentManager.findFragmentById(R.id.nav_host) as NavHostFragment
navBottom.setupWithNavController(navHost.navController)
}
}
}
@@ -0,0 +1,6 @@
package com.rtbishop.look4sat.ui.splash
import androidx.fragment.app.Fragment
import com.rtbishop.look4sat.R
class FirstFragment : Fragment(R.layout.fragment_first)
@@ -0,0 +1,6 @@
package com.rtbishop.look4sat.ui.splash
import androidx.fragment.app.Fragment
import com.rtbishop.look4sat.R
class SecondFragment: Fragment(R.layout.fragment_second)
@@ -0,0 +1,71 @@
package com.rtbishop.look4sat.ui.splash
import android.content.Intent
import android.os.Bundle
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.databinding.ActivitySplashBinding
import com.rtbishop.look4sat.ui.activities.MainActivity
import com.rtbishop.look4sat.utility.PrefsManager
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject
@AndroidEntryPoint
class SplashActivity : FragmentActivity() {
private val pagesCount = 3
@Inject
lateinit var prefsManager: PrefsManager
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (prefsManager.isFirstLaunch()) showOnboarding()
else startMainActivity()
}
private fun showOnboarding() {
setTheme(R.style.AppTheme)
ActivitySplashBinding.inflate(layoutInflater).apply {
setContentView(root)
splashPager.apply {
adapter = SplashPagerAdapter(this@SplashActivity)
registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
super.onPageSelected(position)
if (position == pagesCount - 1) {
splashNext.setImageResource(R.drawable.ic_check)
}
}
})
// isUserInputEnabled = false
}
splashNext.setOnClickListener {
if (splashPager.currentItem < pagesCount - 1) splashPager.currentItem++
else if (splashPager.currentItem == pagesCount - 1) startMainActivity()
}
}
}
private fun startMainActivity() {
startActivity(Intent(this, MainActivity::class.java))
}
private inner class SplashPagerAdapter(activity: FragmentActivity) :
FragmentStateAdapter(activity) {
override fun getItemCount(): Int = pagesCount
override fun createFragment(position: Int): Fragment {
return when (position) {
0 -> FirstFragment()
1 -> SecondFragment()
2 -> ThirdFragment()
else -> FirstFragment()
}
}
}
}
@@ -0,0 +1,6 @@
package com.rtbishop.look4sat.ui.splash
import androidx.fragment.app.Fragment
import com.rtbishop.look4sat.R
class ThirdFragment : Fragment(R.layout.fragment_third)
@@ -79,13 +79,13 @@ class PrefsManager @Inject constructor(val preferences: SharedPreferences) {
}
fun isFirstLaunch(): Boolean {
val isFirstLaunch = preferences.getBoolean(keyIsFirstLaunch, true)
return if (isFirstLaunch) {
preferences.edit {
putBoolean(keyIsFirstLaunch, false)
apply()
}
isFirstLaunch
} else isFirstLaunch
return preferences.getBoolean(keyIsFirstLaunch, true)
}
fun setFirstLaunchDone() {
preferences.edit {
putBoolean(keyIsFirstLaunch, false)
apply()
}
}
}