Skip to content

Commit 93b5ccb

Browse files
authored
Merge pull request #137 from Team-Sopetit/feature/#134-fix-snackbar
#134 [fix] 스낵바 띄우기 및 위치 조정
2 parents 7f4a8e9 + 3eddd4a commit 93b5ccb

File tree

6 files changed

+71
-68
lines changed

6 files changed

+71
-68
lines changed

app/src/main/java/com/sopetit/softie/ui/happyroutine/HappyMyRoutineFragment.kt

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,16 @@ package com.sopetit.softie.ui.happyroutine
33
import android.content.Intent
44
import android.os.Bundle
55
import android.view.View
6+
import androidx.activity.result.contract.ActivityResultContracts
7+
import androidx.appcompat.app.AppCompatActivity
68
import androidx.fragment.app.viewModels
79
import coil.load
810
import com.sopetit.softie.R
911
import com.sopetit.softie.databinding.FragmentHappyMyRoutineBinding
1012
import com.sopetit.softie.ui.happyroutine.complete.HappyRoutineCompleteActivity
1113
import com.sopetit.softie.ui.happyroutine.delete.HappyDeleteFragment
1214
import com.sopetit.softie.ui.happyroutine.list.HappyAddListActivity
15+
import com.sopetit.softie.util.CustomSnackbar
1316
import com.sopetit.softie.util.OriginalBottomSheet
1417
import com.sopetit.softie.util.binding.BindingBottomSheet
1518
import com.sopetit.softie.util.binding.BindingFragment
@@ -22,17 +25,23 @@ class HappyMyRoutineFragment :
2225
BindingFragment<FragmentHappyMyRoutineBinding>(R.layout.fragment_happy_my_routine) {
2326

2427
private val viewModel by viewModels<HappyMyRoutineViewModel>()
28+
private var resultLauncher =
29+
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
30+
if (result.resultCode == AppCompatActivity.RESULT_OK) {
31+
customHappyRoutineAddSnackBar()
32+
}
33+
}
2534

2635
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
2736
super.onViewCreated(view, savedInstanceState)
2837
binding.viewModel = viewModel
2938
setStatusBarColor(R.color.background)
3039

3140
initSetBearFace()
32-
setMyCardEnter()
33-
setCardEnter()
34-
setEditEnter()
35-
setClearEnter()
41+
startHappyAddListActivity()
42+
setCardImageClickListener()
43+
startHappyDeleteActivity()
44+
startHappyRoutineCompleteBottomSheet()
3645
}
3746

3847
override fun onResume() {
@@ -41,6 +50,15 @@ class HappyMyRoutineFragment :
4150
viewModel.getHappyProgress()
4251
}
4352

53+
private fun customHappyRoutineAddSnackBar() {
54+
val customSnackbar = CustomSnackbar.make(
55+
(binding.root.rootView),
56+
getString(R.string.happy_routine_add_snack_bar),
57+
binding.btnHappyProgressClear
58+
)
59+
customSnackbar.show(1000)
60+
}
61+
4462
private fun initSetBearFace() {
4563
viewModel.setDollFace()
4664
viewModel.bearFace.observe(viewLifecycleOwner) { bearFace ->
@@ -51,25 +69,25 @@ class HappyMyRoutineFragment :
5169
}
5270
}
5371

54-
private fun setMyCardEnter() {
72+
private fun startHappyAddListActivity() {
5573
binding.ivHappyRoutineEmptyCard.setOnClickListener {
5674
val intent = Intent(requireContext(), HappyAddListActivity::class.java)
57-
startActivity(intent)
75+
resultLauncher.launch(intent)
5876
}
5977
}
6078

61-
private fun setCardEnter() {
79+
private fun setCardImageClickListener() {
6280
with(binding) {
6381
clHappyProgressCardFront.setSingleOnClickListener {
64-
setCardFlip(clHappyProgressCardFront, clHappyProgressCardBack)
82+
setCardImageFlip(clHappyProgressCardFront, clHappyProgressCardBack)
6583
}
6684
clHappyProgressCardBack.setSingleOnClickListener {
67-
setCardFlip(clHappyProgressCardBack, clHappyProgressCardFront)
85+
setCardImageFlip(clHappyProgressCardBack, clHappyProgressCardFront)
6886
}
6987
}
7088
}
7189

72-
private fun setEditEnter() {
90+
private fun startHappyDeleteActivity() {
7391
binding.tvHappyProgressEdit.setSingleOnClickListener {
7492
val happyDeleteFragment = HappyDeleteFragment()
7593
requireActivity().supportFragmentManager.beginTransaction()
@@ -79,7 +97,7 @@ class HappyMyRoutineFragment :
7997
}
8098
}
8199

82-
private fun setCardFlip(viewFront: View, viewToBack: View) {
100+
private fun setCardImageFlip(viewFront: View, viewToBack: View) {
83101
val isVisible = viewFront.visibility == View.VISIBLE
84102
if (isVisible) {
85103
viewFront.visibility = View.INVISIBLE
@@ -117,7 +135,7 @@ class HappyMyRoutineFragment :
117135
startActivity(intentToCompleteActivity)
118136
}
119137

120-
private fun setClearEnter() {
138+
private fun startHappyRoutineCompleteBottomSheet() {
121139
binding.btnHappyProgressClear.setOnClickListener {
122140
viewModel.happyProgressResponse.value?.iconImageUrl?.let { url ->
123141
initHappyRoutineCompleteBottomSheet(

app/src/main/java/com/sopetit/softie/ui/happyroutine/delete/HappyDeleteFragment.kt

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@ import com.sopetit.softie.R
88
import com.sopetit.softie.databinding.FragmentHappyDeleteBinding
99
import com.sopetit.softie.ui.happyroutine.HappyMyRoutineFragment
1010
import com.sopetit.softie.ui.happyroutine.HappyMyRoutineViewModel
11+
import com.sopetit.softie.ui.main.MainActivity
12+
import com.sopetit.softie.util.CustomSnackbar
1113
import com.sopetit.softie.util.OriginalBottomSheet
1214
import com.sopetit.softie.util.binding.BindingBottomSheet
1315
import com.sopetit.softie.util.binding.BindingFragment
1416
import com.sopetit.softie.util.setSingleOnClickListener
15-
import com.sopetit.softie.util.snackBar
1617
import dagger.hilt.android.AndroidEntryPoint
1718

1819
@AndroidEntryPoint
@@ -25,9 +26,9 @@ class HappyDeleteFragment :
2526
val happyProgress = viewModel.getHappyProgress()
2627

2728
setCardBinding(happyProgress)
28-
setCardEnter()
29+
setCardImageClickListener()
2930
setCancelEnter()
30-
setClearEnter()
31+
startHappyDeleteBottomSheet()
3132
}
3233

3334
private fun setCardBinding(happyProgress: Unit) {
@@ -49,13 +50,13 @@ class HappyDeleteFragment :
4950
}
5051
}
5152

52-
private fun setCardEnter() {
53+
private fun setCardImageClickListener() {
5354
with(binding) {
5455
clHappyDeleteCardFront.setSingleOnClickListener {
55-
setCardFlip(clHappyDeleteCardFront, clHappyDeleteCardBack)
56+
setCardImageFlip(clHappyDeleteCardFront, clHappyDeleteCardBack)
5657
}
5758
clHappyDeleteCardBack.setSingleOnClickListener {
58-
setCardFlip(clHappyDeleteCardBack, clHappyDeleteCardFront)
59+
setCardImageFlip(clHappyDeleteCardBack, clHappyDeleteCardFront)
5960
}
6061
}
6162
}
@@ -66,7 +67,7 @@ class HappyDeleteFragment :
6667
}
6768
}
6869

69-
private fun setCardFlip(viewFront: View, viewToBack: View) {
70+
private fun setCardImageFlip(viewFront: View, viewToBack: View) {
7071
val isVisible = viewFront.visibility == View.VISIBLE
7172
if (isVisible) {
7273
viewFront.visibility = View.INVISIBLE
@@ -77,7 +78,7 @@ class HappyDeleteFragment :
7778
}
7879
}
7980

80-
private fun setClearEnter() {
81+
private fun startHappyDeleteBottomSheet() {
8182
binding.btnHappyDeleteClear.setSingleOnClickListener {
8283
BindingBottomSheet.Builder().build(
8384
isDrawable = true,
@@ -96,10 +97,7 @@ class HappyDeleteFragment :
9697
happyProgress?.let {
9798
viewModel.deleteHappyProgress(happyProgress.routineId)
9899
}
99-
snackBar(
100-
binding.root.rootView,
101-
getString(R.string.happy_routine_delete_snack_bar)
102-
)
100+
customHappyDeleteSnackBar()
103101
requireActivity().supportFragmentManager.beginTransaction()
104102
.replace(R.id.fcv_main, HappyMyRoutineFragment())
105103
.commit()
@@ -108,4 +106,13 @@ class HappyDeleteFragment :
108106
).show(parentFragmentManager, OriginalBottomSheet.BOTTOM_SHEET_TAG)
109107
}
110108
}
109+
110+
private fun customHappyDeleteSnackBar() {
111+
val customSnackbar = CustomSnackbar.make(
112+
(binding.root.rootView),
113+
getString(R.string.happy_routine_delete_snack_bar),
114+
(requireActivity() as MainActivity).findViewById(R.id.bottom_navigation_home)
115+
)
116+
customSnackbar.show(1000)
117+
}
111118
}

app/src/main/java/com/sopetit/softie/ui/happyroutine/detail/HappyDetailActivity.kt

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.sopetit.softie.ui.happyroutine.detail
22

3-
import android.content.Intent
43
import android.graphics.Color
54
import android.os.Bundle
65
import androidx.activity.viewModels
@@ -36,7 +35,7 @@ class HappyDetailActivity :
3635
setInitBinding(routineId, imageUrl)
3736
setCurrentCard()
3837
setBackEnter()
39-
setupAdapter(routineId)
38+
setHappyDetailCardPagerAdapter(routineId)
4039
setIndicator()
4140
}
4241

@@ -56,7 +55,7 @@ class HappyDetailActivity :
5655
viewModel.mySubroutineId.observe(this) { mySubRoutineId ->
5756
mySubRoutineId?.let {
5857
imageUrl?.let {
59-
setBottomSheetEnter(it, mySubRoutineId)
58+
startHappyRoutineAddBottomSheet(it, mySubRoutineId)
6059
}
6160
}
6261
}
@@ -86,7 +85,7 @@ class HappyDetailActivity :
8685
}
8786
}
8887

89-
private fun setBottomSheetEnter(icon: String, subRoutineId: Int) {
88+
private fun startHappyRoutineAddBottomSheet(icon: String, subRoutineId: Int) {
9089
binding.btnHappyDetailAdd.setSingleOnClickListener {
9190
initHappyRoutineAddBottomSheet(icon, subRoutineId)
9291
}
@@ -106,18 +105,18 @@ class HappyDetailActivity :
106105
doBtnColor = R.drawable.shape_main1_fill_12_rect,
107106
backBtnAction = {},
108107
doBtnAction = {
109-
moveToProgress()
110108
viewModel.postAddRoutine(subRoutineId)
109+
moveToProgress()
111110
}
112111
).show(this.supportFragmentManager, OriginalBottomSheet.BOTTOM_SHEET_TAG)
113112
}
114113

115114
private fun moveToProgress() {
116-
setResult(RESULT_OK, Intent())
115+
setResult(RESULT_OK)
117116
finish()
118117
}
119118

120-
private fun setupAdapter(routineId: String) {
119+
private fun setHappyDetailCardPagerAdapter(routineId: String) {
121120
with(binding) {
122121
vpHappyAddDetailCard.adapter = happyRoutineAddCardPagerAdapter
123122
}

app/src/main/java/com/sopetit/softie/ui/happyroutine/list/HappyAddListActivity.kt

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,13 @@ class HappyAddListActivity :
2626
private var happyAddListChipContentAdapter: HappyAddListChipContentAdapter? = null
2727
private var happyAddListContentAdapter: HappyAddListContentAdapter? = null
2828

29-
private val addHappinessRoutineResult = registerForActivityResult(
30-
ActivityResultContracts.StartActivityForResult()
31-
) {
32-
finish()
33-
}
29+
private val startForDetailResult =
30+
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
31+
if (result.resultCode == RESULT_OK) {
32+
setResult(RESULT_OK)
33+
finish()
34+
}
35+
}
3436

3537
override fun onCreate(savedInstanceState: Bundle?) {
3638
super.onCreate(savedInstanceState)
@@ -43,12 +45,12 @@ class HappyAddListActivity :
4345
setChipAdapters()
4446
setBackEnter()
4547
setItemDeco()
46-
setupAdapter()
48+
setHappyAddListAdapter()
4749
}
4850

4951
private fun setChipAdapters() {
5052
happyAddListChipContentAdapter = HappyAddListChipContentAdapter()
51-
happyAddListContentAdapter = HappyAddListContentAdapter(::moveToDetail)
53+
happyAddListContentAdapter = HappyAddListContentAdapter(::startDetailActivity)
5254
}
5355

5456
private fun setBackEnter() {
@@ -64,7 +66,7 @@ class HappyAddListActivity :
6466
binding.rvHappyAddListChip.addItemDecoration(chipDeco)
6567
}
6668

67-
private fun setupAdapter() {
69+
private fun setHappyAddListAdapter() {
6870
with(binding) {
6971
rvHappyAddListChip.adapter = happyAddListChipContentAdapter
7072
rvHappyAddList.adapter = happyAddListContentAdapter
@@ -81,13 +83,12 @@ class HappyAddListActivity :
8183
}
8284
}
8385

84-
private fun moveToDetail(id: Int, iconImageUrl: String) {
85-
val intentToDetail = Intent(this, HappyDetailActivity::class.java).apply {
86+
private fun startDetailActivity(id: Int, iconImageUrl: String) {
87+
val intent = Intent(this, HappyDetailActivity::class.java).apply {
8688
putExtra(ID, id)
8789
putExtra(ICON_IMAGE_URL, iconImageUrl)
8890
}
89-
addHappinessRoutineResult.launch(intentToDetail)
90-
finish()
91+
startForDetailResult.launch(intent)
9192
}
9293

9394
companion object {

app/src/main/java/com/sopetit/softie/ui/main/MainActivity.kt

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,19 @@ package com.sopetit.softie.ui.main
22

33
import android.content.res.ColorStateList
44
import android.os.Bundle
5-
import androidx.activity.viewModels
65
import androidx.core.content.ContextCompat
76
import androidx.fragment.app.Fragment
87
import com.sopetit.softie.R
98
import com.sopetit.softie.databinding.ActivityMainBinding
109
import com.sopetit.softie.ui.dailyroutine.DailyRoutineFragment
1110
import com.sopetit.softie.ui.happyroutine.HappyMyRoutineFragment
12-
import com.sopetit.softie.ui.happyroutine.HappyMyRoutineViewModel
1311
import com.sopetit.softie.ui.main.home.HomeFragment
1412
import com.sopetit.softie.util.binding.BindingActivity
1513
import com.sopetit.softie.util.setStatusBarColorFromResource
16-
import com.sopetit.softie.util.snackBar
1714
import dagger.hilt.android.AndroidEntryPoint
1815

1916
@AndroidEntryPoint
2017
class MainActivity : BindingActivity<ActivityMainBinding>(R.layout.activity_main) {
21-
private val viewModel by viewModels<HappyMyRoutineViewModel>()
2218

2319
override fun onCreate(savedInstanceState: Bundle?) {
2420
super.onCreate(savedInstanceState)
@@ -27,14 +23,6 @@ class MainActivity : BindingActivity<ActivityMainBinding>(R.layout.activity_main
2723
initFragment()
2824
initBottomNavigation()
2925
setBottomNavigationClickListener()
30-
changeToHappyProgressFragment()
31-
}
32-
33-
private fun changeToHappyProgressFragment() {
34-
val fragmentToLoad = intent.getStringExtra("happy_progress_fragment")
35-
if (fragmentToLoad == "happy_progress") {
36-
loadHappyProgressFragment()
37-
}
3826
}
3927

4028
private fun setBottomNavigationClickListener() {
@@ -83,16 +71,4 @@ class MainActivity : BindingActivity<ActivityMainBinding>(R.layout.activity_main
8371
intArrayOf(selectedTextColor, unselectedTextColor)
8472
)
8573
}
86-
87-
private fun loadHappyProgressFragment() {
88-
val fragmentTransaction = supportFragmentManager.beginTransaction()
89-
snackBar(
90-
binding.btnMainAnchor,
91-
getString(R.string.happy_routine_add_snack_bar)
92-
)
93-
setStatusBarColorFromResource(R.color.background)
94-
binding.bnvMain.selectedItemId = R.id.bottom_navigation_happiness_routine
95-
fragmentTransaction.replace(R.id.fcv_main, HappyMyRoutineFragment())
96-
fragmentTransaction.commit()
97-
}
9874
}

app/src/main/res/layout/item_happy_add_detail_card.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
android:id="@+id/cl_happy_routine_add_card"
1616
android:layout_width="280dp"
1717
android:layout_height="398dp"
18-
android:background="@drawable/shape_white_fill_gray100_stroke_20_rect"
1918
android:visibility="visible"
19+
android:background="@drawable/shape_white_fill_gray100_stroke_20_rect"
2020
app:layout_constraintBottom_toBottomOf="parent"
2121
app:layout_constraintEnd_toEndOf="parent"
2222
app:layout_constraintStart_toStartOf="parent"
@@ -119,6 +119,7 @@
119119
android:layout_width="wrap_content"
120120
android:layout_height="wrap_content"
121121
android:layout_marginStart="20dp"
122+
android:layout_marginTop="52dp"
122123
android:layout_marginBottom="7dp"
123124
android:src="@drawable/ic_time"
124125
app:layout_constraintBottom_toTopOf="@id/iv_happy_routine_add_card_detail_place_back"
@@ -131,6 +132,7 @@
131132
android:layout_width="wrap_content"
132133
android:layout_height="wrap_content"
133134
android:layout_marginStart="6dp"
135+
android:textAppearance="@style/body2"
134136
android:textColor="@color/gray400"
135137
app:layout_constraintBottom_toBottomOf="@id/iv_happy_routine_add_card_detail_time_back"
136138
app:layout_constraintStart_toEndOf="@id/iv_happy_routine_add_card_detail_time_back"

0 commit comments

Comments
 (0)