온보딩 튜토리얼 추가
This commit is contained in:
@@ -13,6 +13,7 @@ object Constants {
|
||||
const val PREF_IS_CONTENT_PLAY_LOOP = "pref_is_content_play_loop"
|
||||
const val PREF_IS_FOLLOWED_CREATOR_LIVE = "pref_is_followed_creator_live"
|
||||
const val PREF_NOT_SHOWING_EVENT_POPUP_ID = "pref_not_showing_event_popup_id"
|
||||
const val PREF_IS_VIEWED_ON_BOARDING_TUTORIAL = "pref_is_viewed_on_boarding_tutorial"
|
||||
|
||||
const val EXTRA_CAN = "extra_can"
|
||||
const val EXTRA_DATA = "extra_data"
|
||||
|
@@ -116,4 +116,10 @@ object SharedPreferenceManager {
|
||||
set(value) {
|
||||
sharedPreferences[Constants.PREF_NOT_SHOWING_EVENT_POPUP_ID] = value
|
||||
}
|
||||
|
||||
var isViewedOnboardingTutorial: Boolean
|
||||
get() = sharedPreferences[Constants.PREF_IS_VIEWED_ON_BOARDING_TUTORIAL, false]
|
||||
set(value) {
|
||||
sharedPreferences[Constants.PREF_IS_VIEWED_ON_BOARDING_TUTORIAL] = value
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,80 @@
|
||||
package kr.co.vividnext.sodalive.onboarding
|
||||
|
||||
import android.content.Intent
|
||||
import com.google.android.material.tabs.TabLayoutMediator
|
||||
import kr.co.vividnext.sodalive.R
|
||||
import kr.co.vividnext.sodalive.base.BaseActivity
|
||||
import kr.co.vividnext.sodalive.common.Constants
|
||||
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
|
||||
import kr.co.vividnext.sodalive.databinding.ActivityOnboardingBinding
|
||||
import kr.co.vividnext.sodalive.main.MainActivity
|
||||
import kr.co.vividnext.sodalive.user.login.LoginActivity
|
||||
|
||||
class OnBoardingActivity : BaseActivity<ActivityOnboardingBinding>(
|
||||
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()
|
||||
}
|
||||
}
|
@@ -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>(
|
||||
FragmentOnboardingBinding::inflate
|
||||
) {
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
binding.imageView.setImageResource(imageSrc)
|
||||
}
|
||||
}
|
@@ -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<Fragment>()
|
||||
|
||||
override fun getItemCount() = fragmentList.size
|
||||
override fun createFragment(position: Int) = fragmentList[position]
|
||||
|
||||
fun addFragment(fragment: Fragment) {
|
||||
fragmentList.add(fragment)
|
||||
}
|
||||
}
|
@@ -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>(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(
|
||||
|
Reference in New Issue
Block a user