콘텐츠 메인
- 탭 구성
This commit is contained in:
@@ -0,0 +1,131 @@
|
||||
package kr.co.vividnext.sodalive.audio_content.main.v2
|
||||
|
||||
import android.content.Intent
|
||||
import android.graphics.Typeface
|
||||
import android.widget.TextView
|
||||
import androidx.core.content.res.ResourcesCompat
|
||||
import com.google.android.material.tabs.TabLayout
|
||||
import kr.co.vividnext.sodalive.R
|
||||
import kr.co.vividnext.sodalive.audio_content.box.AudioContentBoxActivity
|
||||
import kr.co.vividnext.sodalive.audio_content.main.v2.alarm.AudioContentMainTabAlarmFragment
|
||||
import kr.co.vividnext.sodalive.audio_content.main.v2.asmr.AudioContentMainTabAsmrFragment
|
||||
import kr.co.vividnext.sodalive.audio_content.main.v2.content.AudioContentMainTabContentFragment
|
||||
import kr.co.vividnext.sodalive.audio_content.main.v2.free.AudioContentMainTabFreeFragment
|
||||
import kr.co.vividnext.sodalive.audio_content.main.v2.replay.AudioContentMainTabReplayFragment
|
||||
import kr.co.vividnext.sodalive.audio_content.main.v2.series.AudioContentMainTabSeriesFragment
|
||||
import kr.co.vividnext.sodalive.base.BaseActivity
|
||||
import kr.co.vividnext.sodalive.common.Constants
|
||||
import kr.co.vividnext.sodalive.databinding.ActivityAudioContentMainBinding
|
||||
import kr.co.vividnext.sodalive.mypage.alarm.AlarmListActivity
|
||||
|
||||
enum class AudioContentMainTab {
|
||||
HOME, SERIES, CONTENT, ALARM, ASMR, REPLAY, FREE;
|
||||
|
||||
companion object {
|
||||
fun fromOrdinal(ordinal: Int): AudioContentMainTab? {
|
||||
return values().getOrNull(ordinal)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class AudioContentMainActivity : BaseActivity<ActivityAudioContentMainBinding>(
|
||||
ActivityAudioContentMainBinding::inflate
|
||||
) {
|
||||
|
||||
private var fontBold: Typeface? = null
|
||||
private var fontMedium: Typeface? = null
|
||||
|
||||
private var startTabPosition: AudioContentMainTab = AudioContentMainTab.SERIES
|
||||
|
||||
override fun setupView() {
|
||||
startTabPosition = AudioContentMainTab.fromOrdinal(
|
||||
intent.getIntExtra(
|
||||
Constants.EXTRA_START_TAB_POSITION,
|
||||
AudioContentMainTab.SERIES.ordinal
|
||||
)
|
||||
) ?: AudioContentMainTab.SERIES
|
||||
|
||||
setupToolbar()
|
||||
loadFont()
|
||||
setupTabs()
|
||||
}
|
||||
|
||||
private fun setupToolbar() {
|
||||
val toolbar = binding.toolbar
|
||||
|
||||
toolbar.ivContentKeep.setOnClickListener {
|
||||
startActivity(
|
||||
Intent(
|
||||
applicationContext,
|
||||
AudioContentBoxActivity::class.java
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
toolbar.ivAlarm.setOnClickListener {
|
||||
startActivity(
|
||||
Intent(
|
||||
applicationContext,
|
||||
AlarmListActivity::class.java
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private fun loadFont() {
|
||||
fontBold = ResourcesCompat.getFont(this, R.font.gmarket_sans_bold)
|
||||
fontMedium = ResourcesCompat.getFont(this, R.font.gmarket_sans_medium)
|
||||
}
|
||||
|
||||
private fun setupTabs() {
|
||||
val tabs = binding.tabs
|
||||
val tabTitles = listOf("홈", "시리즈", "단편", "모닝콜", "ASMR", "다시듣기", "무료")
|
||||
for (title in tabTitles) {
|
||||
tabs.addTab(tabs.newTab().setText(title))
|
||||
}
|
||||
|
||||
tabs.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
|
||||
override fun onTabSelected(tab: TabLayout.Tab) {
|
||||
val selectedTab = AudioContentMainTab.fromOrdinal(tab.position)
|
||||
if (selectedTab == null || selectedTab == AudioContentMainTab.HOME) finish()
|
||||
|
||||
replaceFragment(selectedTab = selectedTab!!)
|
||||
tab.view.isSelected = true
|
||||
setTabFont(tab, fontBold)
|
||||
}
|
||||
|
||||
override fun onTabUnselected(tab: TabLayout.Tab) {
|
||||
tab.view.isSelected = false
|
||||
setTabFont(tab, fontMedium)
|
||||
}
|
||||
|
||||
override fun onTabReselected(tab: TabLayout.Tab) {
|
||||
}
|
||||
})
|
||||
|
||||
tabs.getTabAt(startTabPosition.ordinal)?.select()
|
||||
replaceFragment(selectedTab = startTabPosition)
|
||||
}
|
||||
|
||||
private fun replaceFragment(selectedTab: AudioContentMainTab) {
|
||||
val startFragment = when (selectedTab) {
|
||||
AudioContentMainTab.CONTENT -> AudioContentMainTabContentFragment()
|
||||
AudioContentMainTab.ALARM -> AudioContentMainTabAlarmFragment()
|
||||
AudioContentMainTab.ASMR -> AudioContentMainTabAsmrFragment()
|
||||
AudioContentMainTab.REPLAY -> AudioContentMainTabReplayFragment()
|
||||
AudioContentMainTab.FREE -> AudioContentMainTabFreeFragment()
|
||||
else -> AudioContentMainTabSeriesFragment()
|
||||
}
|
||||
|
||||
supportFragmentManager.beginTransaction()
|
||||
.replace(
|
||||
R.id.fl_container,
|
||||
startFragment
|
||||
)
|
||||
.commit()
|
||||
}
|
||||
|
||||
private fun setTabFont(tab: TabLayout.Tab, font: Typeface?) {
|
||||
(tab.view.getChildAt(1) as? TextView)?.typeface = font
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package kr.co.vividnext.sodalive.audio_content.main.v2.alarm
|
||||
|
||||
import kr.co.vividnext.sodalive.base.BaseFragment
|
||||
import kr.co.vividnext.sodalive.databinding.FragmentAudioContentMainTabAlarmBinding
|
||||
|
||||
class AudioContentMainTabAlarmFragment : BaseFragment<FragmentAudioContentMainTabAlarmBinding>(
|
||||
FragmentAudioContentMainTabAlarmBinding::inflate
|
||||
) {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package kr.co.vividnext.sodalive.audio_content.main.v2.asmr
|
||||
|
||||
import kr.co.vividnext.sodalive.base.BaseFragment
|
||||
import kr.co.vividnext.sodalive.databinding.FragmentAudioContentMainTabAsmrBinding
|
||||
|
||||
class AudioContentMainTabAsmrFragment : BaseFragment<FragmentAudioContentMainTabAsmrBinding>(
|
||||
FragmentAudioContentMainTabAsmrBinding::inflate
|
||||
) {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package kr.co.vividnext.sodalive.audio_content.main.v2.content
|
||||
|
||||
import kr.co.vividnext.sodalive.base.BaseFragment
|
||||
import kr.co.vividnext.sodalive.databinding.FragmentAudioContentMainTabContentBinding
|
||||
|
||||
class AudioContentMainTabContentFragment : BaseFragment<FragmentAudioContentMainTabContentBinding>(
|
||||
FragmentAudioContentMainTabContentBinding::inflate
|
||||
) {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package kr.co.vividnext.sodalive.audio_content.main.v2.free
|
||||
|
||||
import kr.co.vividnext.sodalive.base.BaseFragment
|
||||
import kr.co.vividnext.sodalive.databinding.FragmentAudioContentMainTabFreeBinding
|
||||
|
||||
class AudioContentMainTabFreeFragment : BaseFragment<FragmentAudioContentMainTabFreeBinding>(
|
||||
FragmentAudioContentMainTabFreeBinding::inflate
|
||||
) {
|
||||
}
|
||||
@@ -21,7 +21,6 @@ import androidx.recyclerview.widget.RecyclerView
|
||||
import coil.load
|
||||
import coil.transform.CircleCropTransformation
|
||||
import coil.transform.RoundedCornersTransformation
|
||||
import com.orhanobut.logger.Logger
|
||||
import com.zhpan.bannerview.BaseBannerAdapter
|
||||
import com.zhpan.indicator.enums.IndicatorSlideMode
|
||||
import com.zhpan.indicator.enums.IndicatorStyle
|
||||
@@ -34,6 +33,8 @@ import kr.co.vividnext.sodalive.audio_content.main.GetAudioContentRankingItem
|
||||
import kr.co.vividnext.sodalive.audio_content.main.banner.AudioContentMainBannerAdapter
|
||||
import kr.co.vividnext.sodalive.audio_content.main.new_content.AudioContentMainNewContentThemeAdapter
|
||||
import kr.co.vividnext.sodalive.audio_content.main.ranking.AudioContentMainRankingAdapter
|
||||
import kr.co.vividnext.sodalive.audio_content.main.v2.AudioContentMainActivity
|
||||
import kr.co.vividnext.sodalive.audio_content.main.v2.AudioContentMainTab
|
||||
import kr.co.vividnext.sodalive.audio_content.main.v2.ContentRankCreatorAdapter
|
||||
import kr.co.vividnext.sodalive.audio_content.series.detail.SeriesDetailActivity
|
||||
import kr.co.vividnext.sodalive.audio_content.upload.AudioContentUploadActivity
|
||||
@@ -334,6 +335,44 @@ class AudioContentMainTabHomeFragment : BaseFragment<FragmentAudioContentMainTab
|
||||
binding.rlCategoryAudioToon.setOnClickListener {
|
||||
showToast("준비중 입니다.")
|
||||
}
|
||||
|
||||
binding.rlCategorySeries.setOnClickListener {
|
||||
// startAudioContentMainActivity(AudioContentMainTab.SERIES)
|
||||
requireContext().startActivity(
|
||||
Intent(requireContext(), AudioContentMainActivity::class.java)
|
||||
)
|
||||
}
|
||||
|
||||
binding.rlCategoryContent.setOnClickListener {
|
||||
startAudioContentMainActivity(AudioContentMainTab.CONTENT)
|
||||
}
|
||||
|
||||
binding.rlCategoryAlarm.setOnClickListener {
|
||||
startAudioContentMainActivity(AudioContentMainTab.ALARM)
|
||||
}
|
||||
|
||||
binding.rlCategoryAsmr.setOnClickListener {
|
||||
startAudioContentMainActivity(AudioContentMainTab.ASMR)
|
||||
}
|
||||
|
||||
binding.rlCategoryReplay.setOnClickListener {
|
||||
startAudioContentMainActivity(AudioContentMainTab.REPLAY)
|
||||
}
|
||||
|
||||
binding.rlCategoryFree.setOnClickListener {
|
||||
startAudioContentMainActivity(AudioContentMainTab.FREE)
|
||||
}
|
||||
}
|
||||
|
||||
private fun startAudioContentMainActivity(tab: AudioContentMainTab) {
|
||||
startActivity(
|
||||
Intent(requireContext(), AudioContentMainActivity::class.java).apply {
|
||||
putExtra(
|
||||
Constants.EXTRA_START_TAB_POSITION,
|
||||
tab.ordinal
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
private fun setupRankCreator() {
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package kr.co.vividnext.sodalive.audio_content.main.v2.replay
|
||||
|
||||
import kr.co.vividnext.sodalive.base.BaseFragment
|
||||
import kr.co.vividnext.sodalive.databinding.FragmentAudioContentMainTabReplayBinding
|
||||
|
||||
class AudioContentMainTabReplayFragment : BaseFragment<FragmentAudioContentMainTabReplayBinding>(
|
||||
FragmentAudioContentMainTabReplayBinding::inflate
|
||||
) {
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package kr.co.vividnext.sodalive.audio_content.main.v2.series
|
||||
|
||||
import kr.co.vividnext.sodalive.base.BaseFragment
|
||||
import kr.co.vividnext.sodalive.databinding.FragmentAudioContentMainTabSeriesBinding
|
||||
|
||||
class AudioContentMainTabSeriesFragment : BaseFragment<FragmentAudioContentMainTabSeriesBinding>(
|
||||
FragmentAudioContentMainTabSeriesBinding::inflate
|
||||
) {
|
||||
}
|
||||
Reference in New Issue
Block a user