feat: 메인 라이브
- 새로운 UI의 기본 골격 적용
This commit is contained in:
@@ -141,12 +141,6 @@ object SharedPreferenceManager {
|
||||
sharedPreferences[Constants.PREF_PUSH_TOKEN] = value
|
||||
}
|
||||
|
||||
var isFollowedCreatorLive: Boolean
|
||||
get() = sharedPreferences[Constants.PREF_IS_FOLLOWED_CREATOR_LIVE, false]
|
||||
set(value) {
|
||||
sharedPreferences[Constants.PREF_IS_FOLLOWED_CREATOR_LIVE] = value
|
||||
}
|
||||
|
||||
var isContentPlayLoop: Boolean
|
||||
get() = sharedPreferences[Constants.PREF_IS_CONTENT_PLAY_LOOP, false]
|
||||
set(value) {
|
||||
|
||||
@@ -5,7 +5,6 @@ import android.app.Activity
|
||||
import android.content.Intent
|
||||
import android.content.SharedPreferences
|
||||
import android.graphics.Rect
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
@@ -23,7 +22,6 @@ import com.zhpan.indicator.enums.IndicatorSlideMode
|
||||
import com.zhpan.indicator.enums.IndicatorStyle
|
||||
import kr.co.vividnext.sodalive.R
|
||||
import kr.co.vividnext.sodalive.audio_content.AudioContentPlayService
|
||||
import kr.co.vividnext.sodalive.audio_content.all.by_theme.AudioContentAllByThemeActivity
|
||||
import kr.co.vividnext.sodalive.audio_content.player.AudioContentPlayerService
|
||||
import kr.co.vividnext.sodalive.base.BaseFragment
|
||||
import kr.co.vividnext.sodalive.common.Constants
|
||||
@@ -36,7 +34,6 @@ import kr.co.vividnext.sodalive.explorer.profile.creator_community.all.CreatorCo
|
||||
import kr.co.vividnext.sodalive.extensions.dpToPx
|
||||
import kr.co.vividnext.sodalive.extensions.moneyFormat
|
||||
import kr.co.vividnext.sodalive.following.FollowingCreatorActivity
|
||||
import kr.co.vividnext.sodalive.live.event_banner.EventBannerAdapter
|
||||
import kr.co.vividnext.sodalive.live.now.LiveNowAdapter
|
||||
import kr.co.vividnext.sodalive.live.now.all.LiveNowAllActivity
|
||||
import kr.co.vividnext.sodalive.live.recommend.RecommendLiveAdapter
|
||||
@@ -54,7 +51,8 @@ import kr.co.vividnext.sodalive.live.room.dialog.LiveRoomPasswordDialog
|
||||
import kr.co.vividnext.sodalive.live.room.update.LiveRoomEditActivity
|
||||
import kr.co.vividnext.sodalive.main.MainActivity
|
||||
import kr.co.vividnext.sodalive.message.MessageActivity
|
||||
import kr.co.vividnext.sodalive.settings.event.EventDetailActivity
|
||||
import kr.co.vividnext.sodalive.mypage.can.charge.CanChargeActivity
|
||||
import kr.co.vividnext.sodalive.search.SearchActivity
|
||||
import kr.co.vividnext.sodalive.settings.notification.MemberRole
|
||||
import org.koin.android.ext.android.inject
|
||||
import java.text.SimpleDateFormat
|
||||
@@ -121,24 +119,6 @@ class LiveFragment : BaseFragment<FragmentLiveBinding>(FragmentLiveBinding::infl
|
||||
SharedPreferenceManager.registerOnSharedPreferenceChangeListener(preferenceChangeListener)
|
||||
|
||||
setupView()
|
||||
setupRecommendLive()
|
||||
setupRecommendChannel()
|
||||
setupLiveNow()
|
||||
setupLiveReservation()
|
||||
setupEvent()
|
||||
setupCommunityPost()
|
||||
|
||||
binding.llReviewLive.setOnClickListener {
|
||||
if (SharedPreferenceManager.token.isNotBlank()) {
|
||||
startActivity(
|
||||
Intent(requireContext(), AudioContentAllByThemeActivity::class.java).apply {
|
||||
putExtra(Constants.EXTRA_THEME_ID, 7L)
|
||||
}
|
||||
)
|
||||
} else {
|
||||
(requireActivity() as MainActivity).showLoginActivity()
|
||||
}
|
||||
}
|
||||
|
||||
message = "라이브를 불러오고 있습니다."
|
||||
viewModel.getSummary()
|
||||
@@ -175,6 +155,48 @@ class LiveFragment : BaseFragment<FragmentLiveBinding>(FragmentLiveBinding::infl
|
||||
val intent = Intent(requireContext(), LiveRoomCreateActivity::class.java)
|
||||
activityResultLauncher.launch(intent)
|
||||
}
|
||||
|
||||
setupToolbar()
|
||||
setupLiveNow()
|
||||
setupCommunityPost()
|
||||
setupRecommendLive()
|
||||
setupRecommendChannel()
|
||||
setupLiveReservation()
|
||||
}
|
||||
|
||||
private fun setupToolbar() {
|
||||
if (SharedPreferenceManager.token.isNotBlank()) {
|
||||
binding.llShortIcon.visibility = View.VISIBLE
|
||||
|
||||
binding.ivSearch.setOnClickListener {
|
||||
startActivity(
|
||||
Intent(
|
||||
requireContext(),
|
||||
SearchActivity::class.java
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
binding.ivCharge.setOnClickListener {
|
||||
startActivity(
|
||||
Intent(
|
||||
requireContext(),
|
||||
CanChargeActivity::class.java
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
binding.ivMessage.setOnClickListener {
|
||||
startActivity(
|
||||
Intent(
|
||||
requireContext(),
|
||||
MessageActivity::class.java
|
||||
)
|
||||
)
|
||||
}
|
||||
} else {
|
||||
binding.llShortIcon.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
private fun refreshSummary() {
|
||||
@@ -188,22 +210,6 @@ class LiveFragment : BaseFragment<FragmentLiveBinding>(FragmentLiveBinding::infl
|
||||
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
private fun setupRecommendLive() {
|
||||
binding.layoutRecommendLive.ivMessage.visibility = if (
|
||||
SharedPreferenceManager.token.isNotBlank()
|
||||
) {
|
||||
View.VISIBLE
|
||||
} else {
|
||||
View.GONE
|
||||
}
|
||||
|
||||
binding.layoutRecommendLive.ivMessage.setOnClickListener {
|
||||
if (SharedPreferenceManager.token.isNotBlank()) {
|
||||
startActivity(Intent(requireContext(), MessageActivity::class.java))
|
||||
} else {
|
||||
(requireActivity() as MainActivity).showLoginActivity()
|
||||
}
|
||||
}
|
||||
|
||||
val layoutParams = binding
|
||||
.layoutRecommendLive
|
||||
.pager
|
||||
@@ -255,6 +261,12 @@ class LiveFragment : BaseFragment<FragmentLiveBinding>(FragmentLiveBinding::infl
|
||||
if (it.isNotEmpty()) {
|
||||
binding.layoutRecommendLive.root.visibility = View.VISIBLE
|
||||
binding.layoutRecommendLive.pager.refreshData(it)
|
||||
|
||||
if (it.size > 1) {
|
||||
binding.layoutRecommendLive.indicator2.visibility = View.VISIBLE
|
||||
} else {
|
||||
binding.layoutRecommendLive.indicator2.visibility = View.GONE
|
||||
}
|
||||
} else {
|
||||
binding.layoutRecommendLive.root.visibility = View.GONE
|
||||
}
|
||||
@@ -304,17 +316,17 @@ class LiveFragment : BaseFragment<FragmentLiveBinding>(FragmentLiveBinding::infl
|
||||
when (parent.getChildAdapterPosition(view)) {
|
||||
0 -> {
|
||||
outRect.left = 0.dpToPx().toInt()
|
||||
outRect.right = 8.3f.dpToPx().toInt()
|
||||
outRect.right = 8f.dpToPx().toInt()
|
||||
}
|
||||
|
||||
liveRecommendChannelAdapter.itemCount - 1 -> {
|
||||
outRect.left = 8.3f.dpToPx().toInt()
|
||||
outRect.left = 8f.dpToPx().toInt()
|
||||
outRect.right = 0.dpToPx().toInt()
|
||||
}
|
||||
|
||||
else -> {
|
||||
outRect.left = 8.3f.dpToPx().toInt()
|
||||
outRect.right = 8.3f.dpToPx().toInt()
|
||||
outRect.left = 8f.dpToPx().toInt()
|
||||
outRect.right = 8f.dpToPx().toInt()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -323,36 +335,16 @@ class LiveFragment : BaseFragment<FragmentLiveBinding>(FragmentLiveBinding::infl
|
||||
binding.layoutRecommendChannel.rvRecommendChannel.adapter = liveRecommendChannelAdapter
|
||||
|
||||
if (SharedPreferenceManager.token.isNotBlank()) {
|
||||
binding.layoutRecommendChannel.tvFollowingChannel.visibility = View.VISIBLE
|
||||
binding.layoutRecommendChannel.ivSwitch.visibility = View.VISIBLE
|
||||
binding.layoutRecommendChannel.ivSwitch.setOnClickListener {
|
||||
viewModel.toggleIsFollowedCreatorLive()
|
||||
viewModel.recommendChannelLiveData.observe(viewLifecycleOwner) {
|
||||
if (it.isNotEmpty()) {
|
||||
binding.layoutRecommendChannel.root.visibility = View.VISIBLE
|
||||
liveRecommendChannelAdapter.addItems(it)
|
||||
} else {
|
||||
binding.layoutRecommendChannel.root.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
} else {
|
||||
binding.layoutRecommendChannel.tvFollowingChannel.visibility = View.GONE
|
||||
binding.layoutRecommendChannel.ivSwitch.visibility = View.GONE
|
||||
}
|
||||
|
||||
viewModel.recommendChannelLiveData.observe(viewLifecycleOwner) {
|
||||
binding.layoutRecommendChannel.root.visibility = View.VISIBLE
|
||||
liveRecommendChannelAdapter.addItems(it)
|
||||
binding.layoutRecommendChannel.rvRecommendChannel.requestLayout()
|
||||
binding.layoutRecommendChannel.root.requestLayout()
|
||||
}
|
||||
|
||||
viewModel.isFollowedCreatorLive.observe(viewLifecycleOwner) {
|
||||
liveRecommendChannelAdapter.isFollowedCreatorLive = it
|
||||
liveRecommendChannelAdapter.clear()
|
||||
|
||||
if (it) {
|
||||
binding.layoutRecommendChannel.ivSwitch.setImageResource(R.drawable.btn_toggle_on_big)
|
||||
binding.layoutRecommendChannel.llTitle2.visibility = View.VISIBLE
|
||||
binding.layoutRecommendChannel.llTitle1.visibility = View.GONE
|
||||
} else {
|
||||
binding.layoutRecommendChannel.ivSwitch.setImageResource(R.drawable.btn_toggle_off_big)
|
||||
binding.layoutRecommendChannel.llTitle1.visibility = View.VISIBLE
|
||||
binding.layoutRecommendChannel.llTitle2.visibility = View.GONE
|
||||
}
|
||||
binding.layoutRecommendChannel.root.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
@@ -376,7 +368,7 @@ class LiveFragment : BaseFragment<FragmentLiveBinding>(FragmentLiveBinding::infl
|
||||
|
||||
val recyclerView = binding
|
||||
.layoutLiveNow
|
||||
.rvSudaNow
|
||||
.rvLiveNow
|
||||
|
||||
liveNowAdapter = LiveNowAdapter {
|
||||
if (SharedPreferenceManager.token.isNotBlank()) {
|
||||
@@ -459,7 +451,7 @@ class LiveFragment : BaseFragment<FragmentLiveBinding>(FragmentLiveBinding::infl
|
||||
private fun setupLiveReservation() {
|
||||
val recyclerView = binding
|
||||
.layoutLiveReservation
|
||||
.rvSudaReservation
|
||||
.rvLiveReservation
|
||||
|
||||
liveReservationAdapter = LiveReservationAdapter(isMain = true) {
|
||||
if (SharedPreferenceManager.token.isNotBlank()) {
|
||||
@@ -555,58 +547,6 @@ class LiveFragment : BaseFragment<FragmentLiveBinding>(FragmentLiveBinding::infl
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
private fun setupEvent() {
|
||||
val imageSliderLp = binding.eventBannerSlider.layoutParams
|
||||
imageSliderLp.width = screenWidth
|
||||
imageSliderLp.height = (screenWidth * 300) / 1000
|
||||
binding.eventBannerSlider.layoutParams = imageSliderLp
|
||||
|
||||
binding.eventBannerSlider.apply {
|
||||
adapter = EventBannerAdapter(requireContext()) {
|
||||
if (SharedPreferenceManager.token.isNotBlank()) {
|
||||
if (it.detailImageUrl != null) {
|
||||
val intent = Intent(requireActivity(), EventDetailActivity::class.java)
|
||||
intent.putExtra(Constants.EXTRA_EVENT, it)
|
||||
startActivity(intent)
|
||||
} else if (!it.link.isNullOrBlank()) {
|
||||
startActivity(
|
||||
Intent(
|
||||
Intent.ACTION_VIEW,
|
||||
Uri.parse(it.link)
|
||||
)
|
||||
)
|
||||
}
|
||||
} else {
|
||||
(requireActivity() as MainActivity).showLoginActivity()
|
||||
}
|
||||
} as BaseBannerAdapter<Any>
|
||||
setLifecycleRegistry(lifecycle)
|
||||
setScrollDuration(800)
|
||||
}.create()
|
||||
|
||||
binding.eventBannerSlider
|
||||
.setIndicatorView(binding.indicator)
|
||||
.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(4f.dpToPx().toInt(), 10f.dpToPx().toInt())
|
||||
.setIndicatorHeight(4f.dpToPx().toInt())
|
||||
|
||||
viewModel.eventLiveData.observe(viewLifecycleOwner) {
|
||||
if (it.isNotEmpty()) {
|
||||
binding.eventBannerSlider.visibility = View.VISIBLE
|
||||
binding.eventBannerSlider.refreshData(it)
|
||||
} else {
|
||||
binding.eventBannerSlider.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
private fun setupCommunityPost() {
|
||||
val recyclerView = binding.rvCommunityPost
|
||||
@@ -664,11 +604,13 @@ class LiveFragment : BaseFragment<FragmentLiveBinding>(FragmentLiveBinding::infl
|
||||
viewModel.communityPostItemLiveData.observe(viewLifecycleOwner) {
|
||||
if (it.isNotEmpty()) {
|
||||
recyclerView.visibility = View.VISIBLE
|
||||
binding.tvCommunityPost.visibility = View.VISIBLE
|
||||
creatorCommunityAdapter.items.clear()
|
||||
creatorCommunityAdapter.items.addAll(it)
|
||||
creatorCommunityAdapter.notifyDataSetChanged()
|
||||
} else {
|
||||
recyclerView.visibility = View.GONE
|
||||
binding.tvCommunityPost.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,12 +41,6 @@ class LiveViewModel(
|
||||
val recommendLiveData: LiveData<List<GetRecommendLiveResponse>>
|
||||
get() = _recommendLiveData
|
||||
|
||||
private val _isFollowedCreatorLive = MutableLiveData(
|
||||
SharedPreferenceManager.isFollowedCreatorLive
|
||||
)
|
||||
val isFollowedCreatorLive: LiveData<Boolean>
|
||||
get() = _isFollowedCreatorLive
|
||||
|
||||
private val _recommendChannelLiveData = MutableLiveData<List<GetRecommendChannelResponse>>()
|
||||
val recommendChannelLiveData: LiveData<List<GetRecommendChannelResponse>>
|
||||
get() = _recommendChannelLiveData
|
||||
@@ -71,17 +65,6 @@ class LiveViewModel(
|
||||
var isLast = false
|
||||
private val pageSize = 10
|
||||
|
||||
fun toggleIsFollowedCreatorLive() {
|
||||
val isOn = !_isFollowedCreatorLive.value!!
|
||||
SharedPreferenceManager.isFollowedCreatorLive = isOn
|
||||
_isFollowedCreatorLive.value = isOn
|
||||
if (_isFollowedCreatorLive.value!!) {
|
||||
getFollowedChannelList()
|
||||
} else {
|
||||
getRecommendChannelList()
|
||||
}
|
||||
}
|
||||
|
||||
private fun getFollowedChannelList() {
|
||||
compositeDisposable.add(
|
||||
liveRecommendRepository.getFollowingChannelList(
|
||||
@@ -112,36 +95,6 @@ class LiveViewModel(
|
||||
)
|
||||
}
|
||||
|
||||
private fun getRecommendChannelList() {
|
||||
compositeDisposable.add(
|
||||
liveRecommendRepository.getRecommendChannelList(
|
||||
token = "Bearer ${SharedPreferenceManager.token}"
|
||||
)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(
|
||||
{
|
||||
if (it.success && it.data != null) {
|
||||
_recommendChannelLiveData.postValue(it.data!!)
|
||||
} else {
|
||||
if (it.message != null) {
|
||||
_toastLiveData.postValue(it.message)
|
||||
} else {
|
||||
_toastLiveData.postValue(
|
||||
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
|
||||
)
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
_isLoading.value = false
|
||||
it.message?.let { message -> Logger.e(message) }
|
||||
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.")
|
||||
}
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
private fun getLatestPostListFromCreatorsYouFollow() {
|
||||
compositeDisposable.add(
|
||||
creatorCommunityRepository.getLatestPostListFromCreatorsYouFollow(
|
||||
@@ -174,13 +127,9 @@ class LiveViewModel(
|
||||
|
||||
fun getSummary() {
|
||||
if (!_isLoading.value!!) {
|
||||
if (_isFollowedCreatorLive.value!!) {
|
||||
getFollowedChannelList()
|
||||
} else {
|
||||
getRecommendChannelList()
|
||||
}
|
||||
|
||||
if (SharedPreferenceManager.token.isNotBlank()) {
|
||||
getFollowedChannelList()
|
||||
getLatestPostListFromCreatorsYouFollow()
|
||||
}
|
||||
|
||||
|
||||
@@ -17,8 +17,6 @@ class LiveRecommendChannelAdapter(
|
||||
private val onClickMore: () -> Unit,
|
||||
) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
|
||||
|
||||
var isFollowedCreatorLive = false
|
||||
|
||||
private val items = mutableListOf<GetRecommendChannelResponse>()
|
||||
|
||||
class FooterViewHolder(
|
||||
@@ -112,13 +110,7 @@ class LiveRecommendChannelAdapter(
|
||||
}
|
||||
}
|
||||
|
||||
override fun getItemCount(): Int {
|
||||
return if (isFollowedCreatorLive) {
|
||||
items.size + 1
|
||||
} else {
|
||||
items.size
|
||||
}
|
||||
}
|
||||
override fun getItemCount() = items.size + 1
|
||||
|
||||
override fun getItemViewType(position: Int): Int {
|
||||
return if (position == items.size) {
|
||||
|
||||
5
app/src/main/res/drawable/bg_round_corner_16_263238.xml
Normal file
5
app/src/main/res/drawable/bg_round_corner_16_263238.xml
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<solid android:color="#263238" />
|
||||
<corners android:radius="16dp" />
|
||||
</shape>
|
||||
@@ -4,86 +4,114 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/main_toolbar"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:paddingHorizontal="24dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:contentDescription="@null"
|
||||
android:src="@drawable/img_text_logo" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/ll_short_icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="gone">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_search"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@null"
|
||||
android:src="@drawable/ic_search_white" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_charge"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="24dp"
|
||||
android:contentDescription="@null"
|
||||
android:src="@drawable/ic_can_circle" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_message"
|
||||
android:layout_width="25dp"
|
||||
android:layout_height="25dp"
|
||||
android:contentDescription="@null"
|
||||
android:src="@drawable/ic_message" />
|
||||
</LinearLayout>
|
||||
</RelativeLayout>
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
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/main_toolbar">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<include
|
||||
android:id="@+id/layout_recommend_live"
|
||||
layout="@layout/layout_recommend_live"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="13.3dp"
|
||||
android:layout_marginTop="13.3dp"
|
||||
android:layout_marginBottom="40dp" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/ll_review_live"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="13.3dp"
|
||||
android:layout_marginBottom="40dp"
|
||||
android:background="@drawable/img_bg_review_live"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawablePadding="2.7dp"
|
||||
android:fontFamily="@font/gmarket_sans_bold"
|
||||
android:gravity="center"
|
||||
android:text="라이브 다시듣기"
|
||||
android:textColor="@color/color_672bff"
|
||||
android:textSize="16.7sp"
|
||||
app:drawableStartCompat="@drawable/ic_thumb_play_purple" />
|
||||
</LinearLayout>
|
||||
|
||||
<include
|
||||
android:id="@+id/layout_recommend_channel"
|
||||
layout="@layout/layout_live_recommend_channel"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="13.3dp" />
|
||||
android:orientation="vertical"
|
||||
android:paddingVertical="24dp">
|
||||
|
||||
<include
|
||||
android:id="@+id/layout_live_now"
|
||||
layout="@layout/layout_live_now"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="40dp" />
|
||||
android:layout_marginBottom="48dp" />
|
||||
|
||||
<com.zhpan.bannerview.BannerViewPager
|
||||
android:id="@+id/event_banner_slider"
|
||||
<TextView
|
||||
android:id="@+id/tv_community_post"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="40dp" />
|
||||
|
||||
<com.zhpan.indicator.IndicatorView
|
||||
android:id="@+id/indicator"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="6.7dp" />
|
||||
android:layout_marginHorizontal="24dp"
|
||||
android:layout_marginBottom="14dp"
|
||||
android:fontFamily="@font/pretendard_bold"
|
||||
android:text="커뮤니티"
|
||||
android:textColor="@color/color_3bb9f1"
|
||||
android:textSize="26sp" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/rv_community_post"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="40dp"
|
||||
android:layout_marginBottom="48dp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<include
|
||||
android:id="@+id/layout_recommend_live"
|
||||
layout="@layout/layout_recommend_live"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="48dp" />
|
||||
|
||||
<include
|
||||
android:id="@+id/layout_recommend_channel"
|
||||
layout="@layout/layout_live_recommend_channel"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="48dp" />
|
||||
|
||||
<include
|
||||
android:id="@+id/layout_live_reservation"
|
||||
layout="@layout/layout_live_reservation"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="40dp" />
|
||||
android:layout_height="wrap_content" />
|
||||
</LinearLayout>
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|center_horizontal"
|
||||
android:background="@drawable/bg_round_corner_6_7_3bb9f1"
|
||||
android:fontFamily="@font/gmarket_sans_bold"
|
||||
android:fontFamily="@font/pretendard_bold"
|
||||
android:paddingHorizontal="5.7dp"
|
||||
android:paddingVertical="2.7dp"
|
||||
android:text="LIVE"
|
||||
@@ -42,12 +42,12 @@
|
||||
android:id="@+id/tv_recommend_channel_nickname"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="11.3dp"
|
||||
android:layout_marginTop="12dp"
|
||||
android:ellipsize="end"
|
||||
android:fontFamily="@font/gmarket_sans_medium"
|
||||
android:fontFamily="@font/pretendard_regular"
|
||||
android:lines="1"
|
||||
android:textColor="@color/color_bbbbbb"
|
||||
android:textSize="11.3sp"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="14sp"
|
||||
tools:text="검은사신" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingHorizontal="13.3dp">
|
||||
android:paddingHorizontal="24dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
@@ -18,18 +18,18 @@
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:fontFamily="@font/gmarket_sans_bold"
|
||||
android:fontFamily="@font/pretendard_bold"
|
||||
android:text="지금 "
|
||||
android:textColor="@color/color_eeeeee"
|
||||
android:textSize="18.3sp" />
|
||||
android:textColor="@color/color_3bb9f1"
|
||||
android:textSize="26sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:fontFamily="@font/gmarket_sans_bold"
|
||||
android:fontFamily="@font/pretendard_bold"
|
||||
android:text="라이브중"
|
||||
android:textColor="@color/color_ff5c49"
|
||||
android:textSize="18.3sp" />
|
||||
android:textColor="@color/white"
|
||||
android:textSize="26sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
@@ -38,29 +38,29 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:fontFamily="@font/gmarket_sans_light"
|
||||
android:fontFamily="@font/pretendard_regular"
|
||||
android:text="전체보기"
|
||||
android:textColor="@color/color_bbbbbb"
|
||||
android:textSize="11.3sp" />
|
||||
android:textColor="#78909C"
|
||||
android:textSize="14sp" />
|
||||
</RelativeLayout>
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/rv_suda_now"
|
||||
android:id="@+id/rv_live_now"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="28.3dp"
|
||||
android:layout_marginTop="14dp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/ll_no_items"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="13.3dp"
|
||||
android:layout_marginTop="28.3dp"
|
||||
android:background="@drawable/bg_round_corner_4_7_13181b"
|
||||
android:layout_marginHorizontal="24dp"
|
||||
android:layout_marginTop="28dp"
|
||||
android:background="@drawable/bg_round_corner_16_263238"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:paddingVertical="16.7dp"
|
||||
android:paddingVertical="16dp"
|
||||
android:visibility="gone">
|
||||
|
||||
<ImageView
|
||||
@@ -73,12 +73,12 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginVertical="10dp"
|
||||
android:fontFamily="@font/gmarket_sans_medium"
|
||||
android:fontFamily="@font/pretendard_regular"
|
||||
android:gravity="center"
|
||||
android:text="마이페이지에서 본인인증을 하거나\n라이브를 예약하고 참여해보세요."
|
||||
android:textColor="@color/color_bbbbbb"
|
||||
android:textSize="13sp"
|
||||
android:lineSpacingExtra="8dp"
|
||||
android:text="마이페이지에서 본인인증을 하거나\n라이브를 예약하고 참여해보세요."
|
||||
android:textColor="@color/white"
|
||||
android:textSize="13sp"
|
||||
tools:ignore="SmallSp" />
|
||||
</LinearLayout>
|
||||
|
||||
@@ -86,8 +86,8 @@
|
||||
android:id="@+id/ll_refresh"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="13.3dp"
|
||||
android:layout_marginHorizontal="13.3dp"
|
||||
android:layout_marginHorizontal="24dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:background="@drawable/bg_round_corner_26_7_transparent_909090"
|
||||
android:gravity="center"
|
||||
android:paddingVertical="11dp">
|
||||
@@ -102,7 +102,7 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:fontFamily="@font/gmarket_sans_medium"
|
||||
android:fontFamily="@font/pretendard_regular"
|
||||
android:text="새로고침"
|
||||
android:textSize="14.7sp" />
|
||||
</LinearLayout>
|
||||
|
||||
@@ -6,84 +6,38 @@
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingHorizontal="24dp">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/ll_title_1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="visible"
|
||||
android:layout_centerVertical="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_title1"
|
||||
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" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:fontFamily="@font/gmarket_sans_bold"
|
||||
android:text="채널"
|
||||
android:textColor="@color/color_3bb9f1"
|
||||
android:textSize="18.3sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/ll_title_2"
|
||||
android:layout_width="match_parent"
|
||||
android:visibility="gone"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:fontFamily="@font/gmarket_sans_bold"
|
||||
android:fontFamily="@font/pretendard_bold"
|
||||
android:text="팔로잉 "
|
||||
android:textColor="@color/color_eeeeee"
|
||||
android:textSize="18.3sp" />
|
||||
android:textColor="@color/color_3bb9f1"
|
||||
android:textSize="26sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:fontFamily="@font/gmarket_sans_bold"
|
||||
android:fontFamily="@font/pretendard_bold"
|
||||
android:text="채널"
|
||||
android:textColor="@color/color_3bb9f1"
|
||||
android:textSize="18.3sp" />
|
||||
android:textColor="@color/white"
|
||||
android:textSize="26sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_following_channel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginEnd="6.7dp"
|
||||
android:layout_toStartOf="@+id/iv_switch"
|
||||
android:fontFamily="@font/gmarket_sans_medium"
|
||||
android:text="팔로잉 채널"
|
||||
android:textColor="@color/color_777777"
|
||||
android:textSize="13.3sp" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_switch"
|
||||
android:layout_width="33.3dp"
|
||||
android:layout_height="20dp"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:contentDescription="@null"
|
||||
android:src="@drawable/btn_toggle_off_big" />
|
||||
</RelativeLayout>
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/rv_recommend_channel"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="21.3dp" />
|
||||
android:layout_marginTop="16dp"
|
||||
android:clipToPadding="false"
|
||||
android:paddingHorizontal="24dp" />
|
||||
</LinearLayout>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingHorizontal="13.3dp">
|
||||
android:layout_marginHorizontal="24dp">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
@@ -18,18 +18,18 @@
|
||||
<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" />
|
||||
android:fontFamily="@font/pretendard_bold"
|
||||
android:text="라이브 "
|
||||
android:textColor="@color/color_3bb9f1"
|
||||
android:textSize="26sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:fontFamily="@font/gmarket_sans_bold"
|
||||
android:fontFamily="@font/pretendard_bold"
|
||||
android:text="예약중"
|
||||
android:textColor="@color/color_3bb9f1"
|
||||
android:textSize="18.3sp" />
|
||||
android:textColor="@color/white"
|
||||
android:textSize="26sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
@@ -38,27 +38,29 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:fontFamily="@font/gmarket_sans_light"
|
||||
android:fontFamily="@font/pretendard_regular"
|
||||
android:text="전체보기"
|
||||
android:textColor="@color/color_bbbbbb"
|
||||
android:textSize="11.3sp" />
|
||||
android:textColor="#78909C"
|
||||
android:textSize="14sp" />
|
||||
</RelativeLayout>
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/rv_suda_reservation"
|
||||
android:id="@+id/rv_live_reservation"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="28.3dp"
|
||||
android:layout_marginTop="14dp"
|
||||
android:clipToPadding="false"
|
||||
android:nestedScrollingEnabled="false"
|
||||
android:paddingHorizontal="24dp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/ll_no_items"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginHorizontal="13.3dp"
|
||||
android:layout_marginVertical="28.3dp"
|
||||
android:background="@drawable/bg_round_corner_4_7_13181b"
|
||||
android:layout_marginHorizontal="24dp"
|
||||
android:layout_marginVertical="28dp"
|
||||
android:background="@drawable/bg_round_corner_16_263238"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical"
|
||||
android:paddingVertical="16.7dp"
|
||||
@@ -74,12 +76,12 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginVertical="10dp"
|
||||
android:fontFamily="@font/gmarket_sans_medium"
|
||||
android:fontFamily="@font/pretendard_regular"
|
||||
android:gravity="center"
|
||||
android:text="지금 예약중인 라이브가 없습니다.\n채널을 팔로잉 하고 라이브 알림을 받아 보세요."
|
||||
android:textColor="@color/color_bbbbbb"
|
||||
android:textSize="13sp"
|
||||
android:lineSpacingExtra="8dp"
|
||||
android:text="지금 예약중인 라이브가 없습니다.\n채널을 팔로잉 하고 라이브 알림을 받아 보세요."
|
||||
android:textColor="@color/white"
|
||||
android:textSize="13sp"
|
||||
tools:ignore="SmallSp" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
@@ -4,53 +4,15 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:fontFamily="@font/gmarket_sans_bold"
|
||||
android:text="추천 "
|
||||
android:textColor="@color/color_ff5c49"
|
||||
android:textSize="18.3sp" />
|
||||
|
||||
<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>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_message"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:contentDescription="@null"
|
||||
android:src="@drawable/ic_message" />
|
||||
</RelativeLayout>
|
||||
|
||||
<com.zhpan.bannerview.BannerViewPager
|
||||
android:id="@+id/pager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="26.7dp" />
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<com.zhpan.indicator.IndicatorView
|
||||
android:id="@+id/indicator2"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginTop="6.7dp" />
|
||||
android:layout_marginTop="28dp" />
|
||||
</LinearLayout>
|
||||
|
||||
Reference in New Issue
Block a user