diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index b1f79f2..e28246d 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -89,6 +89,7 @@
+
(
+ ActivityOnboardingBinding::inflate
+) {
+
+ private lateinit var adapter: OnBoardingViewPagerAdapter
+
+ override fun setupView() {
+ setupViewPager()
+ setupTabLayout()
+ setupButtonEvent()
+ }
+
+ private fun setupViewPager() {
+ binding.viewPager.offscreenPageLimit = 9
+
+ adapter = OnBoardingViewPagerAdapter(this)
+ adapter.addFragment(OnBoardingFragment(R.drawable.img_guide_0))
+ adapter.addFragment(OnBoardingFragment(R.drawable.img_guide_1))
+ adapter.addFragment(OnBoardingFragment(R.drawable.img_guide_2))
+ adapter.addFragment(OnBoardingFragment(R.drawable.img_guide_3))
+ adapter.addFragment(OnBoardingFragment(R.drawable.img_guide_4))
+ adapter.addFragment(OnBoardingFragment(R.drawable.img_guide_5))
+ adapter.addFragment(OnBoardingFragment(R.drawable.img_guide_6))
+ binding.viewPager.adapter = adapter
+ }
+
+ private fun setupTabLayout() {
+ TabLayoutMediator(binding.tabs, binding.viewPager) { _, _ -> }.attach()
+ }
+
+ private fun setupButtonEvent() {
+ binding.tvStart.setOnClickListener { moveNextActivity() }
+ }
+
+ private fun moveNextActivity() {
+ SharedPreferenceManager.isViewedOnboardingTutorial = true
+
+ if (SharedPreferenceManager.token.isBlank()) {
+ val nextIntent = Intent(applicationContext, LoginActivity::class.java)
+ val extras = intent.getBundleExtra(Constants.EXTRA_DATA)
+ ?: if (intent.extras != null) {
+ intent.extras
+ } else {
+ null
+ }
+ if (extras != null) {
+ nextIntent.putExtra(Constants.EXTRA_DATA, extras)
+ }
+ startActivity(nextIntent)
+ } else {
+ val nextIntent = Intent(applicationContext, MainActivity::class.java)
+ val extras = intent.getBundleExtra(Constants.EXTRA_DATA)
+ ?: if (intent.extras != null) {
+ intent.extras
+ } else {
+ null
+ }
+ if (extras != null) {
+ nextIntent.putExtra(Constants.EXTRA_DATA, extras)
+ }
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
+ intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
+ startActivity(nextIntent)
+ }
+
+ finish()
+ }
+}
diff --git a/app/src/main/java/kr/co/vividnext/sodalive/onboarding/OnBoardingFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/onboarding/OnBoardingFragment.kt
new file mode 100644
index 0000000..ad1cdc3
--- /dev/null
+++ b/app/src/main/java/kr/co/vividnext/sodalive/onboarding/OnBoardingFragment.kt
@@ -0,0 +1,15 @@
+package kr.co.vividnext.sodalive.onboarding
+
+import android.os.Bundle
+import android.view.View
+import kr.co.vividnext.sodalive.base.BaseFragment
+import kr.co.vividnext.sodalive.databinding.FragmentOnboardingBinding
+
+class OnBoardingFragment(private val imageSrc: Int) : BaseFragment(
+ FragmentOnboardingBinding::inflate
+) {
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ binding.imageView.setImageResource(imageSrc)
+ }
+}
diff --git a/app/src/main/java/kr/co/vividnext/sodalive/onboarding/OnBoardingViewPagerAdapter.kt b/app/src/main/java/kr/co/vividnext/sodalive/onboarding/OnBoardingViewPagerAdapter.kt
new file mode 100644
index 0000000..e8d5efb
--- /dev/null
+++ b/app/src/main/java/kr/co/vividnext/sodalive/onboarding/OnBoardingViewPagerAdapter.kt
@@ -0,0 +1,16 @@
+package kr.co.vividnext.sodalive.onboarding
+
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentActivity
+import androidx.viewpager2.adapter.FragmentStateAdapter
+
+class OnBoardingViewPagerAdapter(activity: FragmentActivity) : FragmentStateAdapter(activity) {
+ private val fragmentList = ArrayList()
+
+ override fun getItemCount() = fragmentList.size
+ override fun createFragment(position: Int) = fragmentList[position]
+
+ fun addFragment(fragment: Fragment) {
+ fragmentList.add(fragment)
+ }
+}
diff --git a/app/src/main/java/kr/co/vividnext/sodalive/splash/SplashActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/splash/SplashActivity.kt
index 6b1c84e..5cea1c9 100644
--- a/app/src/main/java/kr/co/vividnext/sodalive/splash/SplashActivity.kt
+++ b/app/src/main/java/kr/co/vividnext/sodalive/splash/SplashActivity.kt
@@ -20,6 +20,7 @@ import kr.co.vividnext.sodalive.common.Constants
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.databinding.ActivitySplashBinding
import kr.co.vividnext.sodalive.main.MainActivity
+import kr.co.vividnext.sodalive.onboarding.OnBoardingActivity
import kr.co.vividnext.sodalive.user.login.LoginActivity
@SuppressLint("CustomSplashScreen")
@@ -171,13 +172,30 @@ class SplashActivity : BaseActivity(ActivitySplashBinding
}
private fun startNextActivity(extras: Bundle? = null) {
- if (SharedPreferenceManager.token.isBlank()) {
- showLoginActivity(extras)
+ if (SharedPreferenceManager.isViewedOnboardingTutorial) {
+ if (SharedPreferenceManager.token.isBlank()) {
+ showLoginActivity(extras)
+ } else {
+ showMainActivity(extras)
+ }
} else {
- showMainActivity(extras)
+ showOnBoardingTutorialActivity(extras)
}
}
+ private fun showOnBoardingTutorialActivity(extras: Bundle?) {
+ handler.postDelayed({
+ startActivity(
+ Intent(applicationContext, OnBoardingActivity::class.java).apply {
+ putExtra(Constants.EXTRA_DATA, extras)
+ addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
+ addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
+ }
+ )
+ finish()
+ }, 500)
+ }
+
private fun showMainActivity(extras: Bundle?) {
handler.postDelayed({
startActivity(
diff --git a/app/src/main/res/drawable-xxhdpi/img_guide_0.png b/app/src/main/res/drawable-xxhdpi/img_guide_0.png
new file mode 100644
index 0000000..898e89e
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/img_guide_0.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/img_guide_1.png b/app/src/main/res/drawable-xxhdpi/img_guide_1.png
new file mode 100644
index 0000000..9f63ef3
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/img_guide_1.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/img_guide_2.png b/app/src/main/res/drawable-xxhdpi/img_guide_2.png
new file mode 100644
index 0000000..890377e
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/img_guide_2.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/img_guide_3.png b/app/src/main/res/drawable-xxhdpi/img_guide_3.png
new file mode 100644
index 0000000..4ab600d
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/img_guide_3.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/img_guide_4.png b/app/src/main/res/drawable-xxhdpi/img_guide_4.png
new file mode 100644
index 0000000..ccdf05e
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/img_guide_4.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/img_guide_5.png b/app/src/main/res/drawable-xxhdpi/img_guide_5.png
new file mode 100644
index 0000000..949b78f
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/img_guide_5.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/img_guide_6.png b/app/src/main/res/drawable-xxhdpi/img_guide_6.png
new file mode 100644
index 0000000..e1fd23d
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/img_guide_6.png differ
diff --git a/app/src/main/res/drawable/dot_default.xml b/app/src/main/res/drawable/dot_default.xml
new file mode 100644
index 0000000..a8ae5e5
--- /dev/null
+++ b/app/src/main/res/drawable/dot_default.xml
@@ -0,0 +1,8 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/dot_selected.xml b/app/src/main/res/drawable/dot_selected.xml
new file mode 100644
index 0000000..291b4a9
--- /dev/null
+++ b/app/src/main/res/drawable/dot_selected.xml
@@ -0,0 +1,8 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/tab_dot_selector.xml b/app/src/main/res/drawable/tab_dot_selector.xml
new file mode 100644
index 0000000..c5b8312
--- /dev/null
+++ b/app/src/main/res/drawable/tab_dot_selector.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_onboarding.xml b/app/src/main/res/layout/activity_onboarding.xml
new file mode 100644
index 0000000..a53b932
--- /dev/null
+++ b/app/src/main/res/layout/activity_onboarding.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/fragment_onboarding.xml b/app/src/main/res/layout/fragment_onboarding.xml
new file mode 100644
index 0000000..f6463d5
--- /dev/null
+++ b/app/src/main/res/layout/fragment_onboarding.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 2dd14c7..795330e 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -3,7 +3,7 @@
#FF000000
#FFFFFFFF
- #80DFFF
+ #80D8FF
#1313BC
#9970FF
#EEEEEE
@@ -97,4 +97,5 @@
#2F90B7
#A94400
#FFE368
+ #CCF0FF