재생목록과 구매목록이 탭이 있는 내 보관함 페이지 추가

This commit is contained in:
klaus 2024-11-29 15:10:10 +09:00
parent b38ada0b73
commit ab89b6e21a
9 changed files with 140 additions and 4 deletions

View File

@ -146,6 +146,7 @@
<activity android:name=".audio_content.series.detail.SeriesDetailActivity" />
<activity android:name=".audio_content.series.content.SeriesContentAllActivity" />
<activity android:name=".audio_content.playlist.detail.AudioContentPlaylistDetailActivity" />
<activity android:name=".audio_content.box.AudioContentBoxActivity" />
<activity android:name=".mypage.alarm.AlarmListActivity" />
<activity android:name=".mypage.alarm.AddAlarmActivity" />

View File

@ -0,0 +1,63 @@
package kr.co.vividnext.sodalive.audio_content.box
import android.widget.LinearLayout
import com.google.android.material.tabs.TabLayout
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.audio_content.playlist.AudioContentPlaylistListFragment
import kr.co.vividnext.sodalive.base.BaseActivity
import kr.co.vividnext.sodalive.databinding.ActivityAudioContentBoxBinding
class AudioContentBoxActivity : BaseActivity<ActivityAudioContentBoxBinding>(
ActivityAudioContentBoxBinding::inflate
) {
override fun setupView() {
setupToolbar()
setupTabs()
supportFragmentManager.beginTransaction()
.replace(R.id.fl_container, AudioContentPlaylistListFragment())
.commit()
}
private fun setupToolbar() {
binding.toolbar.tvBack.text = "내 보관함"
binding.toolbar.tvBack.setOnClickListener { finish() }
}
private fun setupTabs() {
val tabs = binding.tabs
tabs.addTab(tabs.newTab().setText("재생목록"))
tabs.addTab(tabs.newTab().setText("구매목록"))
tabs.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab) {
tab.view.isSelected = true
when (tab.position) {
0 -> supportFragmentManager.beginTransaction()
.replace(R.id.fl_container, AudioContentPlaylistListFragment())
.commit()
1 -> {}
}
}
override fun onTabUnselected(tab: TabLayout.Tab) {
tab.view.isSelected = false
}
override fun onTabReselected(tab: TabLayout.Tab) {
}
})
val tabStrip = tabs.getChildAt(0) as LinearLayout
for (i in 0 until tabStrip.childCount) {
val tab = tabStrip.getChildAt(i)
val params = tab.layoutParams as LinearLayout.LayoutParams
params.setMargins(12, 0, 12, 0)
params.height = LinearLayout.LayoutParams.WRAP_CONTENT
tab.layoutParams = params
tab.minimumHeight = 0
}
}
}

View File

@ -19,6 +19,7 @@ import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.audio_content.all.AudioContentNewAllActivity
import kr.co.vividnext.sodalive.audio_content.all.AudioContentRankingAllActivity
import kr.co.vividnext.sodalive.audio_content.all.by_theme.AudioContentAllByThemeActivity
import kr.co.vividnext.sodalive.audio_content.box.AudioContentBoxActivity
import kr.co.vividnext.sodalive.audio_content.curation.AudioContentCurationActivity
import kr.co.vividnext.sodalive.audio_content.detail.AudioContentDetailActivity
import kr.co.vividnext.sodalive.audio_content.main.banner.AudioContentMainBannerAdapter
@ -127,7 +128,7 @@ class AudioContentMainFragment : BaseFragment<FragmentAudioContentMainBinding>(
startActivity(
Intent(
requireContext(),
AudioContentOrderListActivity::class.java
AudioContentBoxActivity::class.java
)
)
}
@ -352,7 +353,7 @@ class AudioContentMainFragment : BaseFragment<FragmentAudioContentMainBinding>(
binding.rvMyStash.adapter = orderListAdapter
binding.tvMyStashViewAll.setOnClickListener {
startActivity(Intent(requireContext(), AudioContentOrderListActivity::class.java))
startActivity(Intent(requireContext(), AudioContentBoxActivity::class.java))
}
orderListViewModel.orderListLiveData.observe(viewLifecycleOwner) {

View File

@ -68,7 +68,7 @@ class AudioContentPlaylistListFragment : BaseFragment<FragmentAudioContentPlayli
}
viewModel.totalCountLiveData.observe(viewLifecycleOwner) {
binding.tvCreatePlaylist.text = "${it}"
binding.tvTotalCount.text = "${it}"
}
viewModel.playlistLiveData.observe(viewLifecycleOwner) {

View File

@ -1,12 +1,15 @@
package kr.co.vividnext.sodalive.audio_content.playlist
import androidx.annotation.Keep
import com.google.gson.annotations.SerializedName
@Keep
data class GetPlaylistsResponse(
@SerializedName("totalCount") val totalCount: Int,
@SerializedName("items") val items: List<GetPlaylistsItem>
)
@Keep
data class GetPlaylistsItem(
@SerializedName("id") val id: Long,
@SerializedName("title") val title: String,

View File

@ -0,0 +1,16 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true">
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent" />
<stroke android:width="1dp" android:color="@color/color_3bb9f1" />
<corners android:radius="26.7dp" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent" />
<stroke android:width="1dp" android:color="@color/color_777777" />
<corners android:radius="26.7dp" />
</shape>
</item>
</selector>

View File

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black">
<include
android:id="@+id/toolbar"
layout="@layout/detail_toolbar" />
<com.google.android.material.tabs.TabLayout
android:id="@+id/tabs"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="13.3dp"
android:layout_marginTop="13.3dp"
android:background="@android:color/transparent"
android:elevation="0dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/toolbar"
app:tabBackground="@drawable/audio_content_box_tab_selector"
app:tabGravity="center"
app:tabIndicatorFullWidth="false"
app:tabIndicatorHeight="0dp"
app:tabMode="scrollable"
app:tabSelectedTextColor="@color/color_3bb9f1"
app:tabTextAppearance="@style/playlistTabText"
app:tabPaddingStart="13.3dp"
app:tabPaddingEnd="13.3dp"
app:tabPaddingTop="8.3dp"
app:tabPaddingBottom="8.3dp"
app:tabTextColor="@color/color_777777" />
<FrameLayout
android:id="@+id/fl_container"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tabs" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -5,7 +5,8 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
android:padding="40dp">
android:paddingHorizontal="13.3dp"
android:paddingBottom="13.3dp">
<TextView
android:id="@+id/tv_create_playlist"
@ -28,6 +29,7 @@
android:layout_height="wrap_content"
android:layout_marginTop="13.3dp"
android:gravity="center_vertical"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_create_playlist">
@ -56,6 +58,7 @@
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="13.3dp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"

View File

@ -27,6 +27,11 @@
<item name="android:fontFamily">@font/gmarket_sans_medium</item>
</style>
<style name="playlistTabText" parent="@android:style/TextAppearance.Widget.TabWidget">
<item name="android:fontFamily">@font/gmarket_sans_medium</item>
<item name="android:textSize">14.7sp</item>
</style>
<style name="DatePickerStyle" parent="Theme.AppCompat.Light.Dialog">
<item name="colorAccent">@color/color_3bb9f1</item>
<!--selected Item color-->