diff --git a/app/build.gradle b/app/build.gradle
index 72f84d85..95e3042e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -72,13 +72,15 @@ dependencies {
implementation "androidx.navigation:navigation-fragment-ktx:$navigation_version"
implementation "androidx.navigation:navigation-ui-ktx:$navigation_version"
implementation "androidx.preference:preference-ktx:$preference_version"
+ implementation "androidx.viewpager2:viewpager2:$view_pager2_version"
implementation "androidx.room:room-runtime:$room_version"
implementation "androidx.room:room-ktx:$room_version"
kapt "androidx.room:room-compiler:$room_version"
- implementation "androidx.hilt:hilt-lifecycle-viewmodel:$hilt_viewmodel_version"
implementation "com.google.dagger:hilt-android:$hilt_version"
kapt "com.google.dagger:hilt-android-compiler:$hilt_version"
+
+ implementation "androidx.hilt:hilt-lifecycle-viewmodel:$hilt_viewmodel_version"
kapt "androidx.hilt:hilt-compiler:$hilt_viewmodel_version"
implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ce0c970b..bc9bed1a 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,22 +1,4 @@
-
-
+
@@ -32,7 +14,7 @@
android:label="@string/app_name"
android:theme="@style/AppTheme">
@@ -41,6 +23,9 @@
+
\ No newline at end of file
diff --git a/app/src/main/java/com/rtbishop/look4sat/SharedViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/SharedViewModel.kt
index d371c0b2..406eb01c 100644
--- a/app/src/main/java/com/rtbishop/look4sat/SharedViewModel.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/SharedViewModel.kt
@@ -50,7 +50,10 @@ class SharedViewModel @ViewModelInject constructor(
private var shouldTriggerCalculation = true
init {
- if (prefsManager.isFirstLaunch()) updateDefaultSourcesAndEntries()
+ if (prefsManager.isFirstLaunch()) {
+ updateDefaultSourcesAndEntries()
+ prefsManager.setFirstLaunchDone()
+ }
startApplicationTimer()
}
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/activities/MainActivity.kt b/app/src/main/java/com/rtbishop/look4sat/ui/activities/MainActivity.kt
index 3cc05ef3..74c37993 100644
--- a/app/src/main/java/com/rtbishop/look4sat/ui/activities/MainActivity.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/ui/activities/MainActivity.kt
@@ -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)
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/splash/FirstFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/splash/FirstFragment.kt
new file mode 100644
index 00000000..fbfd0da8
--- /dev/null
+++ b/app/src/main/java/com/rtbishop/look4sat/ui/splash/FirstFragment.kt
@@ -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)
\ No newline at end of file
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/splash/SecondFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/splash/SecondFragment.kt
new file mode 100644
index 00000000..2aef8aa6
--- /dev/null
+++ b/app/src/main/java/com/rtbishop/look4sat/ui/splash/SecondFragment.kt
@@ -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)
\ No newline at end of file
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/splash/SplashActivity.kt b/app/src/main/java/com/rtbishop/look4sat/ui/splash/SplashActivity.kt
new file mode 100644
index 00000000..269d4e8f
--- /dev/null
+++ b/app/src/main/java/com/rtbishop/look4sat/ui/splash/SplashActivity.kt
@@ -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()
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/splash/ThirdFragment.kt b/app/src/main/java/com/rtbishop/look4sat/ui/splash/ThirdFragment.kt
new file mode 100644
index 00000000..9025a18b
--- /dev/null
+++ b/app/src/main/java/com/rtbishop/look4sat/ui/splash/ThirdFragment.kt
@@ -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)
\ No newline at end of file
diff --git a/app/src/main/java/com/rtbishop/look4sat/utility/PrefsManager.kt b/app/src/main/java/com/rtbishop/look4sat/utility/PrefsManager.kt
index eea7bd13..5450e4a8 100644
--- a/app/src/main/java/com/rtbishop/look4sat/utility/PrefsManager.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/utility/PrefsManager.kt
@@ -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()
+ }
}
}
diff --git a/app/src/main/res/drawable/ic_check.xml b/app/src/main/res/drawable/ic_check.xml
new file mode 100644
index 00000000..0432fa69
--- /dev/null
+++ b/app/src/main/res/drawable/ic_check.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_next.xml b/app/src/main/res/drawable/ic_next.xml
new file mode 100644
index 00000000..702e70c5
--- /dev/null
+++ b/app/src/main/res/drawable/ic_next.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_splash.xml b/app/src/main/res/layout/activity_splash.xml
new file mode 100644
index 00000000..6f4c5aa9
--- /dev/null
+++ b/app/src/main/res/layout/activity_splash.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_first.xml b/app/src/main/res/layout/fragment_first.xml
new file mode 100644
index 00000000..9a732ff5
--- /dev/null
+++ b/app/src/main/res/layout/fragment_first.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_second.xml b/app/src/main/res/layout/fragment_second.xml
new file mode 100644
index 00000000..36bc1528
--- /dev/null
+++ b/app/src/main/res/layout/fragment_second.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_third.xml b/app/src/main/res/layout/fragment_third.xml
new file mode 100644
index 00000000..a54a46fe
--- /dev/null
+++ b/app/src/main/res/layout/fragment_third.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 1f22af23..1403ec36 100644
--- a/build.gradle
+++ b/build.gradle
@@ -25,6 +25,7 @@ buildscript {
constraint_layout_version = '2.0.4'
navigation_version = '2.3.1'
preference_version = '1.1.1'
+ view_pager2_version = '1.0.0'
room_version = '2.2.5'
hilt_version = '2.29.1-alpha'
hilt_viewmodel_version = '1.0.0-alpha02'