From 42e4c4649b0e2cacccc4be7e395c50c197617b51 Mon Sep 17 00:00:00 2001 From: klaus Date: Wed, 12 Feb 2025 01:54:17 +0900 Subject: [PATCH] =?UTF-8?q?=EC=BD=98=ED=85=90=EC=B8=A0=20=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=20-=20=ED=83=AD=20=EA=B5=AC=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 1 + .../main/v2/AudioContentMainActivity.kt | 131 ++++++++++++++++++ .../alarm/AudioContentMainTabAlarmFragment.kt | 9 ++ .../asmr/AudioContentMainTabAsmrFragment.kt | 9 ++ .../AudioContentMainTabContentFragment.kt | 9 ++ .../free/AudioContentMainTabFreeFragment.kt | 9 ++ .../home/AudioContentMainTabHomeFragment.kt | 41 +++++- .../AudioContentMainTabReplayFragment.kt | 9 ++ .../AudioContentMainTabSeriesFragment.kt | 9 ++ .../layout/activity_audio_content_main.xml | 41 ++++++ .../fragment_audio_content_main_tab_alarm.xml | 25 ++++ .../fragment_audio_content_main_tab_asmr.xml | 25 ++++ ...ragment_audio_content_main_tab_content.xml | 25 ++++ .../fragment_audio_content_main_tab_free.xml | 25 ++++ ...fragment_audio_content_main_tab_replay.xml | 25 ++++ ...fragment_audio_content_main_tab_series.xml | 25 ++++ .../res/layout/toolbar_audio_content_main.xml | 36 +++++ app/src/main/res/values/themes.xml | 5 + 18 files changed, 458 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/AudioContentMainActivity.kt create mode 100644 app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/alarm/AudioContentMainTabAlarmFragment.kt create mode 100644 app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/asmr/AudioContentMainTabAsmrFragment.kt create mode 100644 app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/content/AudioContentMainTabContentFragment.kt create mode 100644 app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/free/AudioContentMainTabFreeFragment.kt create mode 100644 app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/replay/AudioContentMainTabReplayFragment.kt create mode 100644 app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/series/AudioContentMainTabSeriesFragment.kt create mode 100644 app/src/main/res/layout/activity_audio_content_main.xml create mode 100644 app/src/main/res/layout/fragment_audio_content_main_tab_alarm.xml create mode 100644 app/src/main/res/layout/fragment_audio_content_main_tab_asmr.xml create mode 100644 app/src/main/res/layout/fragment_audio_content_main_tab_content.xml create mode 100644 app/src/main/res/layout/fragment_audio_content_main_tab_free.xml create mode 100644 app/src/main/res/layout/fragment_audio_content_main_tab_replay.xml create mode 100644 app/src/main/res/layout/fragment_audio_content_main_tab_series.xml create mode 100644 app/src/main/res/layout/toolbar_audio_content_main.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f602a9b..6343a53 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -86,6 +86,7 @@ + diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/AudioContentMainActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/AudioContentMainActivity.kt new file mode 100644 index 0000000..2d7885d --- /dev/null +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/AudioContentMainActivity.kt @@ -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::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 + } +} diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/alarm/AudioContentMainTabAlarmFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/alarm/AudioContentMainTabAlarmFragment.kt new file mode 100644 index 0000000..289baa4 --- /dev/null +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/alarm/AudioContentMainTabAlarmFragment.kt @@ -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::inflate +) { +} diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/asmr/AudioContentMainTabAsmrFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/asmr/AudioContentMainTabAsmrFragment.kt new file mode 100644 index 0000000..4ee4a4d --- /dev/null +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/asmr/AudioContentMainTabAsmrFragment.kt @@ -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::inflate +) { +} diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/content/AudioContentMainTabContentFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/content/AudioContentMainTabContentFragment.kt new file mode 100644 index 0000000..1e23d84 --- /dev/null +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/content/AudioContentMainTabContentFragment.kt @@ -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::inflate +) { +} diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/free/AudioContentMainTabFreeFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/free/AudioContentMainTabFreeFragment.kt new file mode 100644 index 0000000..7d9d372 --- /dev/null +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/free/AudioContentMainTabFreeFragment.kt @@ -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::inflate +) { +} diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/home/AudioContentMainTabHomeFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/home/AudioContentMainTabHomeFragment.kt index 3b92650..bf83678 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/home/AudioContentMainTabHomeFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/home/AudioContentMainTabHomeFragment.kt @@ -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( + FragmentAudioContentMainTabReplayBinding::inflate +) { +} diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/series/AudioContentMainTabSeriesFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/series/AudioContentMainTabSeriesFragment.kt new file mode 100644 index 0000000..7b8ec34 --- /dev/null +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/main/v2/series/AudioContentMainTabSeriesFragment.kt @@ -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::inflate +) { +} diff --git a/app/src/main/res/layout/activity_audio_content_main.xml b/app/src/main/res/layout/activity_audio_content_main.xml new file mode 100644 index 0000000..3f07506 --- /dev/null +++ b/app/src/main/res/layout/activity_audio_content_main.xml @@ -0,0 +1,41 @@ + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_audio_content_main_tab_alarm.xml b/app/src/main/res/layout/fragment_audio_content_main_tab_alarm.xml new file mode 100644 index 0000000..1b31835 --- /dev/null +++ b/app/src/main/res/layout/fragment_audio_content_main_tab_alarm.xml @@ -0,0 +1,25 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_audio_content_main_tab_asmr.xml b/app/src/main/res/layout/fragment_audio_content_main_tab_asmr.xml new file mode 100644 index 0000000..1b31835 --- /dev/null +++ b/app/src/main/res/layout/fragment_audio_content_main_tab_asmr.xml @@ -0,0 +1,25 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_audio_content_main_tab_content.xml b/app/src/main/res/layout/fragment_audio_content_main_tab_content.xml new file mode 100644 index 0000000..1b31835 --- /dev/null +++ b/app/src/main/res/layout/fragment_audio_content_main_tab_content.xml @@ -0,0 +1,25 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_audio_content_main_tab_free.xml b/app/src/main/res/layout/fragment_audio_content_main_tab_free.xml new file mode 100644 index 0000000..1b31835 --- /dev/null +++ b/app/src/main/res/layout/fragment_audio_content_main_tab_free.xml @@ -0,0 +1,25 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_audio_content_main_tab_replay.xml b/app/src/main/res/layout/fragment_audio_content_main_tab_replay.xml new file mode 100644 index 0000000..1b31835 --- /dev/null +++ b/app/src/main/res/layout/fragment_audio_content_main_tab_replay.xml @@ -0,0 +1,25 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_audio_content_main_tab_series.xml b/app/src/main/res/layout/fragment_audio_content_main_tab_series.xml new file mode 100644 index 0000000..1b31835 --- /dev/null +++ b/app/src/main/res/layout/fragment_audio_content_main_tab_series.xml @@ -0,0 +1,25 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/toolbar_audio_content_main.xml b/app/src/main/res/layout/toolbar_audio_content_main.xml new file mode 100644 index 0000000..ac21a2c --- /dev/null +++ b/app/src/main/res/layout/toolbar_audio_content_main.xml @@ -0,0 +1,36 @@ + + + + + + + + + diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index bfb7f53..ae82149 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -27,6 +27,11 @@ @font/gmarket_sans_medium + +