Skip to content

Commit

Permalink
Merge pull request #123 from Team-Sopetit/feature/#121-home-lottie-cl…
Browse files Browse the repository at this point in the history
…ick-adjust

#121 [fix] 로티 끝나기 전까지는 로티 재생 안되게 막기
  • Loading branch information
stellar-halo authored Jan 19, 2024
2 parents 5fbbdcd + 7ff26a3 commit a6488b9
Show file tree
Hide file tree
Showing 35 changed files with 388 additions and 158 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import com.sopetit.softie.util.OriginalBottomSheet.Companion.BOTTOM_SHEET_TAG
import com.sopetit.softie.util.binding.BindingAdapter.setCoilImage
import com.sopetit.softie.util.binding.BindingBottomSheet
import com.sopetit.softie.util.binding.BindingFragment
import com.sopetit.softie.util.setSingleOnClickListener
import com.sopetit.softie.util.setStatusBarColor
import com.sopetit.softie.util.snackBar
import dagger.hilt.android.AndroidEntryPoint
Expand Down Expand Up @@ -125,7 +126,7 @@ class DailyRoutineFragment :
}

private fun initSetDailyRoutineAchieve(btn: View, dailyRoutine: DailyRoutine, routineId: Int) {
btn.setOnClickListener {
btn.setSingleOnClickListener {
BindingBottomSheet.Builder().build(
isDrawable = false,
imageDrawable = 0,
Expand All @@ -151,7 +152,7 @@ class DailyRoutineFragment :
viewModel.isDeleteView.observe(viewLifecycleOwner) { isDeleteView ->
val isEditView = !isDeleteView
if (isEditView) {
binding.tvDailyRoutineEdit.setOnClickListener {
binding.tvDailyRoutineEdit.setSingleOnClickListener {
viewModel.setDeleteView(true)
}
}
Expand All @@ -163,7 +164,7 @@ class DailyRoutineFragment :
private fun initSetBackOriginalView() {
viewModel.isDeleteView.observe(viewLifecycleOwner) { isDeleteView ->
if (isDeleteView) {
binding.tvDailyRoutineEdit.setOnClickListener {
binding.tvDailyRoutineEdit.setSingleOnClickListener {
viewModel.setDeleteView(false)
}
clickEditRadioBtn()
Expand Down Expand Up @@ -199,7 +200,7 @@ class DailyRoutineFragment :
}

private fun changeBtnSelectState(button: View, itemId: Int) {
button.setOnClickListener {
button.setSingleOnClickListener {
it.isSelected = !it.isSelected
viewModel.setEditRoutineIdArray(itemId)
setDeleteRoutineBtnContent()
Expand All @@ -221,7 +222,7 @@ class DailyRoutineFragment :
}

private fun initSetRoutineDelete() {
binding.btnDailyRoutineDelete.setOnClickListener {
binding.btnDailyRoutineDelete.setSingleOnClickListener {
BindingBottomSheet.Builder().build(
isDrawable = true,
imageDrawable = R.drawable.ic_bear_face_crying,
Expand Down Expand Up @@ -263,7 +264,7 @@ class DailyRoutineFragment :
}

private fun addDailyRoutineMsg() {
binding.ivDailyRoutineEmpty.setOnClickListener {
binding.ivDailyRoutineEmpty.setSingleOnClickListener {
addDailyRoutineLauncher.launch(
Intent(
requireActivity(),
Expand All @@ -274,7 +275,7 @@ class DailyRoutineFragment :
}

private fun moveToAddRoutine() {
binding.ivDailyRoutineEmpty.setOnClickListener {
binding.ivDailyRoutineEmpty.setSingleOnClickListener {
val intent = Intent(requireContext(), DailyRoutineAddActivity::class.java)
startActivity(intent)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import android.view.View
import androidx.activity.viewModels
import androidx.recyclerview.widget.RecyclerView
import androidx.viewpager2.widget.CompositePageTransformer
import androidx.viewpager2.widget.MarginPageTransformer
import androidx.viewpager2.widget.ViewPager2
import com.sopetit.softie.R
import com.sopetit.softie.databinding.ActivityDailyRoutineAddBinding
Expand All @@ -18,6 +17,7 @@ import com.sopetit.softie.ui.main.MainActivity
import com.sopetit.softie.util.OriginalBottomSheet
import com.sopetit.softie.util.binding.BindingActivity
import com.sopetit.softie.util.binding.BindingBottomSheet
import com.sopetit.softie.util.setSingleOnClickListener
import com.sopetit.softie.util.setStatusBarColorFromResource
import dagger.hilt.android.AndroidEntryPoint

Expand All @@ -39,11 +39,11 @@ class DailyRoutineAddActivity :
dailyRoutineAddViewModel.getThemeList()
dailyRoutineAddViewModel.setThemeId(6)
setupAdapter()
setViewPager()
setupList()
setIndicator()
setItemDiv()
setCurrentCard()
initViewPager()
initPagerDiv(0, 90)
addClickListener()
observeRoutineCardList()
Expand Down Expand Up @@ -90,6 +90,23 @@ class DailyRoutineAddActivity :
}
}

private fun initViewPager() {
viewPager.adapter = dailyRoutineAddCardPagerAdapter

val dp = resources.getDimensionPixelSize(R.dimen.view_margin)
val d = resources.displayMetrics.density
val margin = (dp * d).toInt()

with(binding.vpDailyRoutineAddCard) {
clipChildren = false
clipToPadding = false
offscreenPageLimit = VIEW_PAGE.toInt()
setPadding(margin, PADDING_CARD, margin, PADDING_CARD)
}
val compositePageTransformer = CompositePageTransformer()
binding.vpDailyRoutineAddCard.setPageTransformer(compositePageTransformer)
}

private fun initPagerDiv(previewWidth: Int, itemMargin: Int) {
val decoMargin = previewWidth + itemMargin
val pageTransX = decoMargin + previewWidth
Expand All @@ -104,23 +121,6 @@ class DailyRoutineAddActivity :
}
}

private fun setViewPager() {
with(binding.vpDailyRoutineAddCard) {
adapter = dailyRoutineAddCardPagerAdapter
offscreenPageLimit = VIEW_PAGE.toInt()

val dpValue = PADDING_PAGE
val margin = (dpValue * resources.displayMetrics.density).toInt()
setPadding(margin, PADDING_CARD, margin, PADDING_CARD)

setPageTransformer(
CompositePageTransformer().apply {
addTransformer(MarginPageTransformer(resources.getDimensionPixelOffset(R.dimen.viewpager_margin)))
}
)
}
}

private fun setIndicator() {
binding.diDailyRoutineAddIndicator.attachTo(binding.vpDailyRoutineAddCard)
}
Expand All @@ -138,26 +138,41 @@ class DailyRoutineAddActivity :
}
}

class HorizontalItemDecorator(private val divHeight: Int) : RecyclerView.ItemDecoration() {
@Override
class HorizontalItemDecorator(
private val marginStart: Int,
private val marginEnd: Int,
private val itemMargin: Int
) : RecyclerView.ItemDecoration() {
override fun getItemOffsets(
outRect: Rect,
view: View,
parent: RecyclerView,
state: RecyclerView.State
) {
super.getItemOffsets(outRect, view, parent, state)
outRect.left = divHeight
outRect.right = divHeight

val position = parent.getChildAdapterPosition(view)
val itemCount = parent.adapter?.itemCount ?: 0

if (position == 0) {
outRect.left = marginStart
outRect.right = itemMargin
} else if (position == itemCount - 1) {
outRect.left = itemMargin
outRect.right = marginEnd
} else {
outRect.left = itemMargin
outRect.right = itemMargin
}
}
}

private fun setItemDiv() {
binding.rvDailyRoutineAddTheme.addItemDecoration(HorizontalItemDecorator(16))
binding.rvDailyRoutineAddTheme.addItemDecoration(HorizontalItemDecorator(65, 65, 16))
}

private fun backToDailyRoutine() {
binding.ivDailyRoutineAddBack.setOnClickListener {
binding.ivDailyRoutineAddBack.setSingleOnClickListener {
finish()
}
}
Expand All @@ -172,11 +187,12 @@ class DailyRoutineAddActivity :
})
}

private fun getCurrentSelectedRoutine(): Routine {
private fun getCurrentSelectedRoutine(): Routine? {
val currentItem = binding.vpDailyRoutineAddCard.currentItem
val itemId = dailyRoutineAddCardPagerAdapter.getItemId(currentItem)
val itemContent = dailyRoutineAddCardPagerAdapter.content
return Routine(itemId.toInt(), itemContent)
?: dailyRoutineAddViewModel.dailyRoutineCardThemeList.value?.routine?.get(0)?.content
return itemContent?.let { content -> Routine(itemId.toInt(), content) }
}

private fun getCurrentSelectedRoutineId(): Int {
Expand All @@ -186,13 +202,14 @@ class DailyRoutineAddActivity :
}

private fun initSetDailyRoutineAdd() {
binding.btnDailyRoutineAdd.setOnClickListener {
binding.btnDailyRoutineAdd.setSingleOnClickListener {
BindingBottomSheet.Builder().build(
isDrawable = false,
imageDrawable = 0,
imageUri = dailyRoutineAddThemeAdapter.clickedThemeIcon,
imageUri = dailyRoutineAddThemeAdapter.clickedThemeIcon ?: "",
title = getString(R.string.daily_routine_add_question),
content = getCurrentSelectedRoutine().content,
content = getCurrentSelectedRoutine()?.content
?: getString(R.string.daily_routine_basic_bottom_sheet_content),
isContentVisible = true,
contentColor = R.color.gray400,
backBtnContent = getString(R.string.daily_routine_add_no),
Expand All @@ -216,7 +233,6 @@ class DailyRoutineAddActivity :

companion object {
const val VIEW_PAGE = 3
const val PADDING_PAGE = 40
const val PADDING_CARD = 0
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class DailyRoutineAddCardPagerAdapter :
)
) {
lateinit var background: String
lateinit var content: String
var content: String? = null
fun updateBackground(backgroundImg: String) {
background = backgroundImg
}
Expand All @@ -33,6 +33,7 @@ class DailyRoutineAddCardPagerAdapter :
}

override fun onBindViewHolder(holder: DailyPagerViewHolder, position: Int) {
if (content == null) content = currentList[0].content
holder.onBind(currentList[position])
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import com.sopetit.softie.databinding.ItemDailyRoutineAddThemeBinding
import com.sopetit.softie.domain.entity.Theme
import com.sopetit.softie.util.ItemDiffCallback
import com.sopetit.softie.util.binding.BindingAdapter.setCoilImage
import com.sopetit.softie.util.setSingleOnClickListener

class DailyRoutineAddThemeAdapter :
ListAdapter<Theme, DailyRoutineAddThemeAdapter.DailyThemeViewHolder>(
Expand All @@ -21,7 +22,7 @@ class DailyRoutineAddThemeAdapter :
private var onItemClickListener: OnItemClickListener? = null
private var selectedPosition = 0
var clickedThemeId: Int = 1
lateinit var clickedThemeIcon: String
var clickedThemeIcon: String? = null

interface OnItemClickListener {
fun onItemClick(item: Theme, position: Int)
Expand All @@ -47,7 +48,7 @@ class DailyRoutineAddThemeAdapter :
}

if (onItemClickListener != null) {
binding.root.setOnClickListener {
binding.root.setSingleOnClickListener {
onItemClickListener?.onItemClick(data, absoluteAdapterPosition)
if (selectedPosition != absoluteAdapterPosition) {
changeThemeBackground(binding, true)
Expand Down Expand Up @@ -112,6 +113,7 @@ class DailyRoutineAddThemeAdapter :
}

override fun onBindViewHolder(holder: DailyThemeViewHolder, position: Int) {
if (clickedThemeIcon == null) clickedThemeIcon = currentList[0].iconImageUrl
holder.onBind(currentList[position])
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import com.sopetit.softie.ui.happyroutine.progress.HappyProgressViewModel
import com.sopetit.softie.util.OriginalBottomSheet
import com.sopetit.softie.util.binding.BindingBottomSheet
import com.sopetit.softie.util.binding.BindingFragment
import com.sopetit.softie.util.setSingleOnClickListener
import com.sopetit.softie.util.snackBar
import dagger.hilt.android.AndroidEntryPoint

Expand Down Expand Up @@ -47,17 +48,17 @@ class HappyDeleteFragment :

private fun setCardEnter() {
with(binding) {
clHappyDeleteCardFront.setOnClickListener {
clHappyDeleteCardFront.setSingleOnClickListener {
setCardFlip(clHappyDeleteCardFront, clHappyDeleteCardBack)
}
clHappyDeleteCardBack.setOnClickListener {
clHappyDeleteCardBack.setSingleOnClickListener {
setCardFlip(clHappyDeleteCardBack, clHappyDeleteCardFront)
}
}
}

private fun setCancelEnter() {
binding.tvHappyDeleteDestroy.setOnClickListener {
binding.tvHappyDeleteDestroy.setSingleOnClickListener {
requireActivity().supportFragmentManager.popBackStack()
}
}
Expand All @@ -74,7 +75,7 @@ class HappyDeleteFragment :
}

private fun setClearEnter() {
binding.btnHappyDeleteClear.setOnClickListener {
binding.btnHappyDeleteClear.setSingleOnClickListener {
BindingBottomSheet.Builder().build(
isDrawable = true,
imageDrawable = R.drawable.ic_bear_face_crying,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import com.sopetit.softie.ui.onboarding.OnboardingActivity.Companion.LOADING_DEL
import com.sopetit.softie.util.OriginalBottomSheet
import com.sopetit.softie.util.binding.BindingActivity
import com.sopetit.softie.util.binding.BindingBottomSheet
import com.sopetit.softie.util.setSingleOnClickListener
import com.sopetit.softie.util.setStatusBarColorFromResource
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.CoroutineScope
Expand Down Expand Up @@ -87,13 +88,13 @@ class HappyDetailActivity :
}

private fun setBackEnter() {
binding.ivHappyAddDetailBack.setOnClickListener {
binding.ivHappyAddDetailBack.setSingleOnClickListener {
finish()
}
}

private fun setBottomSheetEnter(icon: String, subRoutineId: Int) {
binding.btnHappyDetailAdd.setOnClickListener {
binding.btnHappyDetailAdd.setSingleOnClickListener {
initHappyRoutineAddBottomSheet(icon, subRoutineId)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import coil.load
import com.sopetit.softie.databinding.ItemHappyAddDetailCardBinding
import com.sopetit.softie.domain.entity.HappyCard
import com.sopetit.softie.util.ItemDiffCallback
import com.sopetit.softie.util.setSingleOnClickListener

class HappyDetailCardPagerAdapter() :
ListAdapter<HappyCard.SubRoutines, HappyDetailCardPagerAdapter.HappyPagerViewHolder>(
Expand All @@ -35,10 +36,10 @@ class HappyDetailCardPagerAdapter() :
data.timeTaken
tvHappyRoutineAddCardDetailPlaceBack.text = data.place

clHappyRoutineAddCard.setOnClickListener {
clHappyRoutineAddCard.setSingleOnClickListener {
setCardFlip(clHappyRoutineAddCard, clHappyRoutineAddCardBack)
}
clHappyRoutineAddCardBack.setOnClickListener {
clHappyRoutineAddCardBack.setSingleOnClickListener {
setCardFlip(clHappyRoutineAddCardBack, clHappyRoutineAddCard)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import com.sopetit.softie.ui.happyroutine.detail.HappyDetailActivity
import com.sopetit.softie.util.HorizontalChipItemDecoration
import com.sopetit.softie.util.VerticalItemDecoration
import com.sopetit.softie.util.binding.BindingActivity
import com.sopetit.softie.util.setSingleOnClickListener
import com.sopetit.softie.util.setStatusBarColorFromResource
import dagger.hilt.android.AndroidEntryPoint

Expand Down Expand Up @@ -44,7 +45,7 @@ class HappyAddListActivity :
}

private fun setBackEnter() {
binding.ivHappyAddBackArrow.setOnClickListener {
binding.ivHappyAddBackArrow.setSingleOnClickListener {
finish()
}
}
Expand Down
Loading

0 comments on commit a6488b9

Please sign in to comment.