마이페이지

- 내 보관함 이동 버튼 추가
This commit is contained in:
klaus 2025-01-08 02:14:01 +09:00
parent ae378409b9
commit b3351ceb8b
5 changed files with 90 additions and 111 deletions

View File

@ -1,22 +1,38 @@
package kr.co.vividnext.sodalive.audio_content.box package kr.co.vividnext.sodalive.audio_content.box
import android.os.Handler
import android.os.Looper
import android.widget.LinearLayout import android.widget.LinearLayout
import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayout
import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.audio_content.order.AudioContentOrderListFragment import kr.co.vividnext.sodalive.audio_content.order.AudioContentOrderListFragment
import kr.co.vividnext.sodalive.audio_content.playlist.AudioContentPlaylistListFragment import kr.co.vividnext.sodalive.audio_content.playlist.AudioContentPlaylistListFragment
import kr.co.vividnext.sodalive.base.BaseActivity import kr.co.vividnext.sodalive.base.BaseActivity
import kr.co.vividnext.sodalive.common.Constants
import kr.co.vividnext.sodalive.databinding.ActivityAudioContentBoxBinding import kr.co.vividnext.sodalive.databinding.ActivityAudioContentBoxBinding
class AudioContentBoxActivity : BaseActivity<ActivityAudioContentBoxBinding>( class AudioContentBoxActivity : BaseActivity<ActivityAudioContentBoxBinding>(
ActivityAudioContentBoxBinding::inflate ActivityAudioContentBoxBinding::inflate
) { ) {
private var startTabPosition = 0
override fun setupView() { override fun setupView() {
startTabPosition = intent.getIntExtra(Constants.EXTRA_START_TAB_POSITION, 0)
setupToolbar() setupToolbar()
setupTabs() setupTabs()
binding.tabs.getTabAt(startTabPosition)?.select()
supportFragmentManager.beginTransaction() supportFragmentManager.beginTransaction()
.replace(R.id.fl_container, AudioContentOrderListFragment()) .replace(
R.id.fl_container,
if (startTabPosition == 1) {
AudioContentPlaylistListFragment()
} else {
AudioContentOrderListFragment()
}
)
.commit() .commit()
} }

View File

@ -30,6 +30,7 @@ object Constants {
const val EXTRA_USER_ID = "extra_user_id" const val EXTRA_USER_ID = "extra_user_id"
const val EXTRA_THEME_ID = "extra_theme_id" const val EXTRA_THEME_ID = "extra_theme_id"
const val EXTRA_SERIES_ID = "extra_series_id" const val EXTRA_SERIES_ID = "extra_series_id"
const val EXTRA_START_TAB_POSITION = "extra_start_tab"
const val EXTRA_NICKNAME = "extra_nickname" const val EXTRA_NICKNAME = "extra_nickname"
const val EXTRA_MESSAGE_ID = "extra_message_id" const val EXTRA_MESSAGE_ID = "extra_message_id"
const val EXTRA_AUDITION_ID = "extra_audition_id" const val EXTRA_AUDITION_ID = "extra_audition_id"

View File

@ -2,29 +2,23 @@ package kr.co.vividnext.sodalive.mypage
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
import android.graphics.Rect
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import android.webkit.URLUtil import android.webkit.URLUtil
import android.widget.LinearLayout import android.widget.LinearLayout
import android.widget.Toast import android.widget.Toast
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import coil.load import coil.load
import coil.transform.CircleCropTransformation import coil.transform.CircleCropTransformation
import com.google.gson.Gson import com.google.gson.Gson
import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.audio_content.detail.AudioContentDetailActivity import kr.co.vividnext.sodalive.audio_content.box.AudioContentBoxActivity
import kr.co.vividnext.sodalive.audio_content.order.AudioContentOrderListActivity
import kr.co.vividnext.sodalive.audio_content.order.AudioContentOrderListAdapter
import kr.co.vividnext.sodalive.base.BaseFragment import kr.co.vividnext.sodalive.base.BaseFragment
import kr.co.vividnext.sodalive.common.Constants import kr.co.vividnext.sodalive.common.Constants
import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.databinding.FragmentMyBinding import kr.co.vividnext.sodalive.databinding.FragmentMyBinding
import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity
import kr.co.vividnext.sodalive.extensions.dpToPx
import kr.co.vividnext.sodalive.extensions.moneyFormat import kr.co.vividnext.sodalive.extensions.moneyFormat
import kr.co.vividnext.sodalive.following.FollowingCreatorActivity import kr.co.vividnext.sodalive.following.FollowingCreatorActivity
import kr.co.vividnext.sodalive.live.reservation_status.LiveReservationStatusActivity import kr.co.vividnext.sodalive.live.reservation_status.LiveReservationStatusActivity
@ -47,7 +41,6 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
private val viewModel: MyPageViewModel by inject() private val viewModel: MyPageViewModel by inject()
private lateinit var loadingDialog: LoadingDialog private lateinit var loadingDialog: LoadingDialog
private lateinit var orderListAdapter: AudioContentOrderListAdapter
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
@ -63,42 +56,6 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
} }
private fun setupView() { private fun setupView() {
orderListAdapter = AudioContentOrderListAdapter {
startActivity(
Intent(requireContext(), AudioContentDetailActivity::class.java)
.apply { putExtra(Constants.EXTRA_AUDIO_CONTENT_ID, it) }
)
}
binding.rvOrderList.layoutManager = LinearLayoutManager(
requireContext(),
LinearLayoutManager.VERTICAL,
false
)
binding.rvOrderList.addItemDecoration(object : RecyclerView.ItemDecoration() {
override fun getItemOffsets(
outRect: Rect,
view: View,
parent: RecyclerView,
state: RecyclerView.State
) {
super.getItemOffsets(outRect, view, parent, state)
when (parent.getChildAdapterPosition(view)) {
orderListAdapter.itemCount - 1 -> {
outRect.bottom = 0
}
else -> {
outRect.bottom = 13.3f.dpToPx().toInt()
}
}
}
})
binding.rvOrderList.adapter = orderListAdapter
binding.ivSettings.setOnClickListener { binding.ivSettings.setOnClickListener {
startActivity( startActivity(
Intent( Intent(
@ -213,6 +170,20 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
startActivity(Intent(requireContext(), BlockMemberActivity::class.java)) startActivity(Intent(requireContext(), BlockMemberActivity::class.java))
} }
binding.tvOrderList.setOnClickListener {
startActivity(
Intent(requireContext(), AudioContentBoxActivity::class.java)
)
}
binding.tvPlaylist.setOnClickListener {
startActivity(
Intent(requireContext(), AudioContentBoxActivity::class.java).apply {
putExtra(Constants.EXTRA_START_TAB_POSITION, 1)
}
)
}
val ivHowToUseLp = binding.ivHowToUse.layoutParams as LinearLayout.LayoutParams val ivHowToUseLp = binding.ivHowToUse.layoutParams as LinearLayout.LayoutParams
ivHowToUseLp.width = screenWidth ivHowToUseLp.width = screenWidth
ivHowToUseLp.height = (200 * screenWidth) / 1080 ivHowToUseLp.height = (200 * screenWidth) / 1080
@ -293,23 +264,6 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
binding.tvTotalCan.text = (it.chargeCan + it.rewardCan).moneyFormat() binding.tvTotalCan.text = (it.chargeCan + it.rewardCan).moneyFormat()
binding.tvReservationLive.text = "${it.liveReservationCount}" binding.tvReservationLive.text = "${it.liveReservationCount}"
if (it.orderList.totalCount > 0) {
binding.llOrderList.visibility = View.VISIBLE
orderListAdapter.items.addAll(it.orderList.items)
orderListAdapter.notifyDataSetChanged()
binding.tvAllOrderList.setOnClickListener {
startActivity(
Intent(
requireContext(),
AudioContentOrderListActivity::class.java
)
)
}
} else {
binding.llOrderList.visibility = View.GONE
}
} }
} }
} }

View File

@ -16,6 +16,5 @@ data class MyPageResponse(
@SerializedName("blogUrl") val blogUrl: String?, @SerializedName("blogUrl") val blogUrl: String?,
@SerializedName("liveReservationCount") val liveReservationCount: Int, @SerializedName("liveReservationCount") val liveReservationCount: Int,
@SerializedName("likeCount") val likeCount: Int, @SerializedName("likeCount") val likeCount: Int,
@SerializedName("isAuth") val isAuth: Boolean, @SerializedName("isAuth") val isAuth: Boolean
@SerializedName("orderList") val orderList: GetAudioContentOrderListResponse
) )

View File

@ -167,28 +167,28 @@
android:id="@+id/tv_following_list" android:id="@+id/tv_following_list"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_weight="1" android:layout_weight="1"
android:background="@drawable/bg_round_corner_6_7_transparent_3bb9f1" android:background="@drawable/bg_round_corner_6_7_13181b_3bb9f1"
android:fontFamily="@font/gmarket_sans_bold" android:fontFamily="@font/gmarket_sans_bold"
android:gravity="center" android:gravity="center"
android:paddingVertical="13.3dp" android:paddingVertical="13.3dp"
android:text="팔로잉 리스트" android:text="팔로잉 리스트"
android:textColor="@color/color_3bb9f1" android:textColor="@color/color_3bb9f1"
android:textSize="15.3sp" /> android:textSize="14.7sp" />
<TextView <TextView
android:id="@+id/tv_block_member_list" android:id="@+id/tv_block_member_list"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:background="@drawable/bg_round_corner_6_7_transparent_3bb9f1" android:background="@drawable/bg_round_corner_6_7_13181b_3bb9f1"
android:fontFamily="@font/gmarket_sans_bold" android:fontFamily="@font/gmarket_sans_bold"
android:layout_marginStart="10.7dp"
android:gravity="center" android:gravity="center"
android:paddingVertical="13.3dp" android:paddingVertical="13.3dp"
android:text="차단 리스트" android:text="차단 리스트"
android:textColor="@color/color_3bb9f1" android:textColor="@color/color_3bb9f1"
android:textSize="15.3sp" /> android:textSize="14.7sp" />
</LinearLayout> </LinearLayout>
<RelativeLayout <RelativeLayout
@ -327,6 +327,55 @@
android:src="@drawable/ic_forward" /> android:src="@drawable/ic_forward" />
</RelativeLayout> </RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/gmarket_sans_bold"
android:text="내 보관함"
android:textColor="@color/color_eeeeee"
android:textSize="18.3sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="13.3dp"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_order_list"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/bg_round_corner_6_7_13181b_3bb9f1"
android:fontFamily="@font/gmarket_sans_bold"
android:gravity="center"
android:paddingVertical="13.3dp"
android:text="구매목록"
android:textColor="@color/color_3bb9f1"
android:textSize="14.7sp" />
<TextView
android:id="@+id/tv_playlist"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="10.7dp"
android:layout_weight="1"
android:background="@drawable/bg_round_corner_6_7_13181b_3bb9f1"
android:fontFamily="@font/gmarket_sans_bold"
android:gravity="center"
android:paddingVertical="13.3dp"
android:text="재생목록"
android:textColor="@color/color_3bb9f1"
android:textSize="14.7sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -363,7 +412,7 @@
android:layout_marginEnd="4dp" android:layout_marginEnd="4dp"
android:fontFamily="@font/gmarket_sans_bold" android:fontFamily="@font/gmarket_sans_bold"
android:text="라이브" android:text="라이브"
android:textColor="@color/color_80d8ff" android:textColor="@color/color_3bb9f1"
android:textSize="14.7sp" /> android:textSize="14.7sp" />
<TextView <TextView
@ -371,52 +420,12 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/gmarket_sans_medium" android:fontFamily="@font/gmarket_sans_medium"
android:textColor="@color/color_80d8ff" android:textColor="@color/color_3bb9f1"
android:textSize="14.7sp" android:textSize="14.7sp"
tools:text="3" /> tools:text="3" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
<LinearLayout
android:id="@+id/ll_order_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:orientation="vertical"
android:visibility="gone">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/gmarket_sans_bold"
android:text="콘텐츠 보관함"
android:textColor="@color/color_eeeeee"
android:textSize="18sp" />
<TextView
android:id="@+id/tv_all_order_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:fontFamily="@font/gmarket_sans_medium"
android:text="전체보기"
android:textColor="@color/color_bbbbbb"
android:textSize="11sp" />
</RelativeLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_order_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="26.7dp" />
</LinearLayout>
<RelativeLayout <RelativeLayout
android:id="@+id/rl_service_center" android:id="@+id/rl_service_center"
android:layout_width="match_parent" android:layout_width="match_parent"