feat: 메인 홈
- 오디션 리스트를 보여주지 않고 터치시 오디션 페이지로 이동하도록 수정
This commit is contained in:
@@ -175,6 +175,7 @@
|
||||
<activity android:name=".audio_content.main.v2.series.completed.CompletedSeriesActivity" />
|
||||
|
||||
<activity android:name=".search.SearchActivity" />
|
||||
<activity android:name=".audition.AuditionActivity" />
|
||||
|
||||
<activity android:name=".mypage.alarm.AlarmListActivity" />
|
||||
<activity android:name=".mypage.alarm.AddAlarmActivity" />
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
package kr.co.vividnext.sodalive.audition
|
||||
|
||||
import androidx.annotation.OptIn
|
||||
import androidx.media3.common.util.UnstableApi
|
||||
import kr.co.vividnext.sodalive.R
|
||||
import kr.co.vividnext.sodalive.base.BaseActivity
|
||||
import kr.co.vividnext.sodalive.databinding.ActivityAuditionBinding
|
||||
|
||||
@OptIn(UnstableApi::class)
|
||||
class AuditionActivity : BaseActivity<ActivityAuditionBinding>(
|
||||
ActivityAuditionBinding::inflate
|
||||
) {
|
||||
override fun setupView() {
|
||||
supportFragmentManager.beginTransaction()
|
||||
.replace(R.id.fl_container, AuditionFragment())
|
||||
.commit()
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,6 @@ import kr.co.vividnext.sodalive.audio_content.main.GetAudioContentBannerResponse
|
||||
import kr.co.vividnext.sodalive.audio_content.main.GetAudioContentRankingItem
|
||||
import kr.co.vividnext.sodalive.audio_content.main.v2.GetContentCurationResponse
|
||||
import kr.co.vividnext.sodalive.audio_content.series.GetSeriesListResponse
|
||||
import kr.co.vividnext.sodalive.audition.GetAuditionListItem
|
||||
import kr.co.vividnext.sodalive.explorer.GetExplorerSectionCreatorResponse
|
||||
import kr.co.vividnext.sodalive.live.GetRoomListResponse
|
||||
import kr.co.vividnext.sodalive.settings.event.GetEventResponse
|
||||
@@ -20,7 +19,6 @@ data class GetHomeResponse(
|
||||
@SerializedName("bannerList") val bannerList: List<GetAudioContentBannerResponse>,
|
||||
@SerializedName("eventBannerList") val eventBannerList: GetEventResponse,
|
||||
@SerializedName("originalAudioDramaList") val originalAudioDramaList: List<GetSeriesListResponse.SeriesListItem>,
|
||||
@SerializedName("auditionList") val auditionList: List<GetAuditionListItem>,
|
||||
@SerializedName("dayOfWeekSeriesList") val dayOfWeekSeriesList: List<GetSeriesListResponse.SeriesListItem>,
|
||||
@SerializedName("contentRanking") val contentRanking: List<GetAudioContentRankingItem>,
|
||||
@SerializedName("recommendChannelList") val recommendChannelList: List<RecommendChannelResponse>,
|
||||
|
||||
@@ -32,7 +32,7 @@ import kr.co.vividnext.sodalive.audio_content.main.banner.AudioContentMainBanner
|
||||
import kr.co.vividnext.sodalive.audio_content.player.AudioContentPlayerService
|
||||
import kr.co.vividnext.sodalive.audio_content.series.detail.SeriesDetailActivity
|
||||
import kr.co.vividnext.sodalive.audio_content.upload.AudioContentUploadActivity
|
||||
import kr.co.vividnext.sodalive.audition.detail.AuditionDetailActivity
|
||||
import kr.co.vividnext.sodalive.audition.AuditionActivity
|
||||
import kr.co.vividnext.sodalive.base.BaseFragment
|
||||
import kr.co.vividnext.sodalive.common.Constants
|
||||
import kr.co.vividnext.sodalive.common.LoadingDialog
|
||||
@@ -54,7 +54,6 @@ import org.koin.android.ext.android.inject
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Date
|
||||
import java.util.Locale
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
@OptIn(UnstableApi::class)
|
||||
class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::inflate) {
|
||||
@@ -627,62 +626,23 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>(FragmentHomeBinding::infl
|
||||
|
||||
private fun setupAudition() {
|
||||
val layoutParams = binding
|
||||
.auditionSlider
|
||||
.ivAudition
|
||||
.layoutParams as LinearLayout.LayoutParams
|
||||
|
||||
val pagerWidth = screenWidth.toDouble()
|
||||
val pagerHeight = (pagerWidth * 120 / 352).roundToInt()
|
||||
layoutParams.width = pagerWidth.roundToInt()
|
||||
layoutParams.height = pagerHeight
|
||||
val width = screenWidth
|
||||
val height = width * 198 / 352
|
||||
layoutParams.width = width
|
||||
layoutParams.height = height
|
||||
|
||||
auditionAdapter = AuditionBannerAdapter(
|
||||
requireContext(),
|
||||
pagerWidth.roundToInt(),
|
||||
pagerHeight
|
||||
) {
|
||||
if (SharedPreferenceManager.token.isNotBlank()) {
|
||||
startActivity(
|
||||
Intent(requireContext(), AuditionDetailActivity::class.java).apply {
|
||||
putExtra(Constants.EXTRA_AUDITION_ID, it)
|
||||
}
|
||||
binding.ivAudition.layoutParams = layoutParams
|
||||
|
||||
binding.ivAudition.setOnClickListener {
|
||||
startActivity(
|
||||
Intent(
|
||||
requireContext(),
|
||||
AuditionActivity::class.java
|
||||
)
|
||||
} else {
|
||||
(requireActivity() as MainActivity).showLoginActivity()
|
||||
}
|
||||
}
|
||||
|
||||
binding
|
||||
.auditionSlider
|
||||
.layoutParams = layoutParams
|
||||
|
||||
binding.auditionSlider.apply {
|
||||
adapter = auditionAdapter as BaseBannerAdapter<Any>
|
||||
|
||||
setLifecycleRegistry(lifecycle)
|
||||
setScrollDuration(1000)
|
||||
setInterval(4 * 1000)
|
||||
}.create()
|
||||
|
||||
binding
|
||||
.auditionSlider
|
||||
.setIndicatorView(binding.indicatorAudition)
|
||||
.setIndicatorStyle(IndicatorStyle.ROUND_RECT)
|
||||
.setIndicatorSlideMode(IndicatorSlideMode.SMOOTH)
|
||||
.setIndicatorVisibility(View.GONE)
|
||||
.setIndicatorSliderColor(
|
||||
ContextCompat.getColor(requireContext(), R.color.color_909090),
|
||||
ContextCompat.getColor(requireContext(), R.color.color_3bb9f1)
|
||||
)
|
||||
.setIndicatorSliderWidth(10f.dpToPx().toInt(), 10f.dpToPx().toInt())
|
||||
.setIndicatorHeight(10f.dpToPx().toInt())
|
||||
|
||||
viewModel.auditionListLiveData.observe(viewLifecycleOwner) {
|
||||
if (it.isNotEmpty()) {
|
||||
binding.llAudition.visibility = View.VISIBLE
|
||||
binding.auditionSlider.refreshData(it)
|
||||
} else {
|
||||
binding.llAudition.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -50,10 +50,6 @@ class HomeViewModel(private val repository: HomeRepository) : BaseViewModel() {
|
||||
val originalAudioDramaListLiveData: LiveData<List<GetSeriesListResponse.SeriesListItem>>
|
||||
get() = _originalAudioDramaListLiveData
|
||||
|
||||
private var _auditionListLiveData = MutableLiveData<List<GetAuditionListItem>>()
|
||||
val auditionListLiveData: LiveData<List<GetAuditionListItem>>
|
||||
get() = _auditionListLiveData
|
||||
|
||||
private var _dayOfWeekSeriesListLiveData =
|
||||
MutableLiveData<List<GetSeriesListResponse.SeriesListItem>>()
|
||||
val dayOfWeekSeriesListLiveData: LiveData<List<GetSeriesListResponse.SeriesListItem>>
|
||||
@@ -97,7 +93,6 @@ class HomeViewModel(private val repository: HomeRepository) : BaseViewModel() {
|
||||
_latestContentListLiveData.value = data.latestContentList
|
||||
_eventBannerListLiveData.value = data.bannerList
|
||||
_originalAudioDramaListLiveData.value = data.originalAudioDramaList
|
||||
_auditionListLiveData.value = data.auditionList
|
||||
_dayOfWeekSeriesListLiveData.value = data.dayOfWeekSeriesList
|
||||
_contentRankingLiveData.value = data.contentRanking
|
||||
_freeContentListLiveData.value = data.freeContentList
|
||||
|
||||
@@ -12,7 +12,6 @@ import kr.co.vividnext.sodalive.base.BaseViewModel
|
||||
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
|
||||
import kr.co.vividnext.sodalive.explorer.profile.creator_community.CreatorCommunityRepository
|
||||
import kr.co.vividnext.sodalive.explorer.profile.creator_community.GetCommunityPostListResponse
|
||||
import kr.co.vividnext.sodalive.home.AudioContentMainItem
|
||||
import kr.co.vividnext.sodalive.live.recommend.GetRecommendLiveResponse
|
||||
import kr.co.vividnext.sodalive.live.recommend.LiveRecommendRepository
|
||||
import kr.co.vividnext.sodalive.live.recommend_channel.GetRecommendChannelResponse
|
||||
|
||||
BIN
app/src/main/res/drawable-mdpi/img_banner_audition.png
Normal file
BIN
app/src/main/res/drawable-mdpi/img_banner_audition.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 62 KiB |
11
app/src/main/res/layout/activity_audition.xml
Normal file
11
app/src/main/res/layout/activity_audition.xml
Normal file
@@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/fl_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -218,26 +218,14 @@
|
||||
android:paddingHorizontal="24dp" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/ll_audition"
|
||||
<ImageView
|
||||
android:id="@+id/iv_audition"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="48dp"
|
||||
android:orientation="vertical"
|
||||
android:visibility="gone">
|
||||
|
||||
<com.zhpan.bannerview.BannerViewPager
|
||||
android:id="@+id/audition_slider"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<com.zhpan.indicator.IndicatorView
|
||||
android:id="@+id/indicator_audition"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="28dp" />
|
||||
</LinearLayout>
|
||||
android:contentDescription="@null"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@drawable/img_banner_audition" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/ll_series_day_of_week"
|
||||
|
||||
Reference in New Issue
Block a user