재생목록과 구매목록이 탭이 있는 내 보관함 페이지 추가
This commit is contained in:
parent
b38ada0b73
commit
ab89b6e21a
|
@ -146,6 +146,7 @@
|
||||||
<activity android:name=".audio_content.series.detail.SeriesDetailActivity" />
|
<activity android:name=".audio_content.series.detail.SeriesDetailActivity" />
|
||||||
<activity android:name=".audio_content.series.content.SeriesContentAllActivity" />
|
<activity android:name=".audio_content.series.content.SeriesContentAllActivity" />
|
||||||
<activity android:name=".audio_content.playlist.detail.AudioContentPlaylistDetailActivity" />
|
<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.AlarmListActivity" />
|
||||||
<activity android:name=".mypage.alarm.AddAlarmActivity" />
|
<activity android:name=".mypage.alarm.AddAlarmActivity" />
|
||||||
|
|
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -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.AudioContentNewAllActivity
|
||||||
import kr.co.vividnext.sodalive.audio_content.all.AudioContentRankingAllActivity
|
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.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.curation.AudioContentCurationActivity
|
||||||
import kr.co.vividnext.sodalive.audio_content.detail.AudioContentDetailActivity
|
import kr.co.vividnext.sodalive.audio_content.detail.AudioContentDetailActivity
|
||||||
import kr.co.vividnext.sodalive.audio_content.main.banner.AudioContentMainBannerAdapter
|
import kr.co.vividnext.sodalive.audio_content.main.banner.AudioContentMainBannerAdapter
|
||||||
|
@ -127,7 +128,7 @@ class AudioContentMainFragment : BaseFragment<FragmentAudioContentMainBinding>(
|
||||||
startActivity(
|
startActivity(
|
||||||
Intent(
|
Intent(
|
||||||
requireContext(),
|
requireContext(),
|
||||||
AudioContentOrderListActivity::class.java
|
AudioContentBoxActivity::class.java
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -352,7 +353,7 @@ class AudioContentMainFragment : BaseFragment<FragmentAudioContentMainBinding>(
|
||||||
|
|
||||||
binding.rvMyStash.adapter = orderListAdapter
|
binding.rvMyStash.adapter = orderListAdapter
|
||||||
binding.tvMyStashViewAll.setOnClickListener {
|
binding.tvMyStashViewAll.setOnClickListener {
|
||||||
startActivity(Intent(requireContext(), AudioContentOrderListActivity::class.java))
|
startActivity(Intent(requireContext(), AudioContentBoxActivity::class.java))
|
||||||
}
|
}
|
||||||
|
|
||||||
orderListViewModel.orderListLiveData.observe(viewLifecycleOwner) {
|
orderListViewModel.orderListLiveData.observe(viewLifecycleOwner) {
|
||||||
|
|
|
@ -68,7 +68,7 @@ class AudioContentPlaylistListFragment : BaseFragment<FragmentAudioContentPlayli
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.totalCountLiveData.observe(viewLifecycleOwner) {
|
viewModel.totalCountLiveData.observe(viewLifecycleOwner) {
|
||||||
binding.tvCreatePlaylist.text = "${it}개"
|
binding.tvTotalCount.text = "${it}개"
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.playlistLiveData.observe(viewLifecycleOwner) {
|
viewModel.playlistLiveData.observe(viewLifecycleOwner) {
|
||||||
|
|
|
@ -1,12 +1,15 @@
|
||||||
package kr.co.vividnext.sodalive.audio_content.playlist
|
package kr.co.vividnext.sodalive.audio_content.playlist
|
||||||
|
|
||||||
|
import androidx.annotation.Keep
|
||||||
import com.google.gson.annotations.SerializedName
|
import com.google.gson.annotations.SerializedName
|
||||||
|
|
||||||
|
@Keep
|
||||||
data class GetPlaylistsResponse(
|
data class GetPlaylistsResponse(
|
||||||
@SerializedName("totalCount") val totalCount: Int,
|
@SerializedName("totalCount") val totalCount: Int,
|
||||||
@SerializedName("items") val items: List<GetPlaylistsItem>
|
@SerializedName("items") val items: List<GetPlaylistsItem>
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@Keep
|
||||||
data class GetPlaylistsItem(
|
data class GetPlaylistsItem(
|
||||||
@SerializedName("id") val id: Long,
|
@SerializedName("id") val id: Long,
|
||||||
@SerializedName("title") val title: String,
|
@SerializedName("title") val title: String,
|
||||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -5,7 +5,8 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="@color/black"
|
android:background="@color/black"
|
||||||
android:padding="40dp">
|
android:paddingHorizontal="13.3dp"
|
||||||
|
android:paddingBottom="13.3dp">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv_create_playlist"
|
android:id="@+id/tv_create_playlist"
|
||||||
|
@ -28,6 +29,7 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="13.3dp"
|
android:layout_marginTop="13.3dp"
|
||||||
android:gravity="center_vertical"
|
android:gravity="center_vertical"
|
||||||
|
android:visibility="gone"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/tv_create_playlist">
|
app:layout_constraintTop_toBottomOf="@+id/tv_create_playlist">
|
||||||
|
@ -56,6 +58,7 @@
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:layout_marginTop="13.3dp"
|
android:layout_marginTop="13.3dp"
|
||||||
|
android:visibility="gone"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
|
|
@ -27,6 +27,11 @@
|
||||||
<item name="android:fontFamily">@font/gmarket_sans_medium</item>
|
<item name="android:fontFamily">@font/gmarket_sans_medium</item>
|
||||||
</style>
|
</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">
|
<style name="DatePickerStyle" parent="Theme.AppCompat.Light.Dialog">
|
||||||
<item name="colorAccent">@color/color_3bb9f1</item>
|
<item name="colorAccent">@color/color_3bb9f1</item>
|
||||||
<!--selected Item color-->
|
<!--selected Item color-->
|
||||||
|
|
Loading…
Reference in New Issue