diff --git a/app/build.gradle b/app/build.gradle
index 5f1130f2..8599a591 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -98,6 +98,7 @@ dependencies {
// coil
implementation 'io.coil-kt:coil:2.4.0'
+ implementation 'io.coil-kt:coil-gif:2.4.0'
// Timber
implementation 'com.jakewharton.timber:timber:5.0.1'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 530d8cd5..f49d5deb 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -15,9 +15,25 @@
android:usesCleartextTraffic="true"
android:theme="@style/Theme.Umbbaandroid"
tools:targetApi="31">
+
+
+
+
(R.layout.activity_invite) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
+ goCommunicationActivity()
+ goInviteCodeActivity()
+ }
+
+ private fun goCommunicationActivity() {
+ binding.btnStart.setOnClickListener {
+ startActivity(Intent(this, CommunicationActivity::class.java))
+ }
+ }
+
+ private fun goInviteCodeActivity() {
+ binding.btnInputCode.setOnClickListener {
+ startActivity(Intent(this, InviteCodeActivity::class.java))
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/sopt/umbba_android/presentation/login/AgreePrivacyUseActivity.kt b/app/src/main/java/com/sopt/umbba_android/presentation/login/AgreePrivacyUseActivity.kt
new file mode 100644
index 00000000..2bc71b70
--- /dev/null
+++ b/app/src/main/java/com/sopt/umbba_android/presentation/login/AgreePrivacyUseActivity.kt
@@ -0,0 +1,122 @@
+package com.sopt.umbba_android.presentation.login
+
+import android.content.Intent
+import android.graphics.Typeface
+import android.os.Bundle
+import android.text.Spannable
+import android.text.SpannableStringBuilder
+import android.text.style.StyleSpan
+import android.text.util.Linkify
+import android.widget.TextView
+import androidx.core.content.ContextCompat
+import com.sopt.umbba_android.R
+import com.sopt.umbba_android.databinding.ActivityAgreePrivacyUseBinding
+import com.sopt.umbba_android.presentation.invite.InviteActivity
+import com.sopt.umbba_android.util.binding.BindingActivity
+import java.util.regex.Pattern
+
+class AgreePrivacyUseActivity : BindingActivity(R.layout.activity_agree_privacy_use) {
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ clickAllAgreeButton()
+ clickCircleButton()
+ setHyperLinkAndColorInTermsTextView()
+ setHyperLinkAndColorInPrivacyTextView()
+ goInviteActivity()
+ }
+
+ private fun clickAllAgreeButton() {
+ with(binding) {
+ btnAllAgreeCheck.setOnClickListener {
+ btnAllAgreeCheck.isSelected = !btnAllAgreeCheck.isSelected
+ checkAllAgreeButton()
+ }
+ }
+ }
+
+ private fun checkAllAgreeButton() {
+ with(binding) {
+ if (btnAllAgreeCheck.isSelected) {
+ btnUp14.isSelected = true
+ btnAgreeTermsAndCondition.isSelected = true
+ btnAgreePrivacy.isSelected = true
+ btnNext.isEnabled = true
+ } else {
+ btnUp14.isSelected = false
+ btnAgreeTermsAndCondition.isSelected = false
+ btnAgreePrivacy.isSelected = false
+ btnNext.isEnabled = false
+ }
+ }
+ }
+
+ private fun clickCircleButton() {
+ with(binding) {
+ btnUp14.setOnClickListener {
+ btnUp14.isSelected = !btnUp14.isSelected
+ checkAllCircleButton()
+ }
+ btnAgreeTermsAndCondition.setOnClickListener {
+ btnAgreeTermsAndCondition.isSelected = !btnAgreeTermsAndCondition.isSelected
+ checkAllCircleButton()
+ }
+ btnAgreePrivacy.setOnClickListener {
+ btnAgreePrivacy.isSelected = !btnAgreePrivacy.isSelected
+ checkAllCircleButton()
+ }
+ }
+ }
+
+ private fun checkAllCircleButton() {
+ with(binding) {
+ if (btnUp14.isSelected && btnAgreeTermsAndCondition.isSelected && btnAgreePrivacy.isSelected) {
+ btnAllAgreeCheck.isSelected = true
+ btnNext.isEnabled = true
+ } else {
+ btnAllAgreeCheck.isSelected = false
+ btnNext.isEnabled = false
+ }
+ }
+ }
+
+ private fun setHyperLinkAndColorInTermsTextView() {
+ with(binding) {
+ setHyperLinkToTextView("서비스 이용약관", tvAgreeTermsAndCondition, "https://www.notion.so/f1a14bf60ed4421f9b3761ef88906adb?pvs=4")
+ setLinkTextColorToBlack(tvAgreeTermsAndCondition)
+ setLinkBold(tvAgreeTermsAndCondition, 13)
+ }
+ }
+
+ private fun setHyperLinkAndColorInPrivacyTextView() {
+ with(binding) {
+ setHyperLinkToTextView("개인정보 수집 및 이용", tvAgreePrivacy, "https://www.notion.so/99fe0f58825d4f87bd3b987fadc623b6?pvs=4")
+ setLinkTextColorToBlack(tvAgreePrivacy)
+ setLinkBold(tvAgreePrivacy, 17)
+ }
+ }
+
+ private fun setHyperLinkToTextView(text: String, view: TextView, uri: String) {
+ val transform = Linkify.TransformFilter { match, url -> "" }
+ val pattern = Pattern.compile(text)
+
+ Linkify.addLinks(view, pattern, uri, null, transform)
+ }
+
+ private fun setLinkTextColorToBlack(view: TextView) {
+ view.setLinkTextColor(ContextCompat.getColor(this, R.color.umbba_black))
+ }
+
+ private fun setLinkBold(view: TextView, end: Int) {
+ val sentence = SpannableStringBuilder(view.text)
+ sentence.setSpan(StyleSpan(Typeface.BOLD), 5, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
+ view.text = sentence
+ }
+
+ private fun goInviteActivity() {
+ binding.btnNext.setOnClickListener {
+ startActivity(Intent(this, InviteActivity::class.java))
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/sopt/umbba_android/presentation/login/LoginActivity.kt b/app/src/main/java/com/sopt/umbba_android/presentation/login/LoginActivity.kt
index 2ca026e4..24410308 100644
--- a/app/src/main/java/com/sopt/umbba_android/presentation/login/LoginActivity.kt
+++ b/app/src/main/java/com/sopt/umbba_android/presentation/login/LoginActivity.kt
@@ -1,5 +1,6 @@
package com.sopt.umbba_android.presentation.login
+import android.content.Intent
import android.os.Bundle
import com.sopt.umbba_android.R
import com.sopt.umbba_android.databinding.ActivityLoginBinding
@@ -8,5 +9,18 @@ import com.sopt.umbba_android.util.binding.BindingActivity
class LoginActivity : BindingActivity(R.layout.activity_login) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
+
+ loginWithKaKao()
+ }
+
+ private fun loginWithKaKao() {
+ //TODO("카카오 로그인 및 자동 로그인 진행")
+ goAgreePrivacyUseActivity()
+ }
+
+ private fun goAgreePrivacyUseActivity() {
+ binding.btnKakaoLogin.setOnClickListener {
+ startActivity(Intent(this, AgreePrivacyUseActivity::class.java))
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/sopt/umbba_android/presentation/onboarding/CommunicationActivity.kt b/app/src/main/java/com/sopt/umbba_android/presentation/onboarding/CommunicationActivity.kt
new file mode 100644
index 00000000..946620db
--- /dev/null
+++ b/app/src/main/java/com/sopt/umbba_android/presentation/onboarding/CommunicationActivity.kt
@@ -0,0 +1,21 @@
+package com.sopt.umbba_android.presentation.onboarding
+
+import android.content.Intent
+import android.os.Bundle
+import com.sopt.umbba_android.R
+import com.sopt.umbba_android.databinding.ActivityCommunicationBinding
+import com.sopt.umbba_android.util.binding.BindingActivity
+
+class CommunicationActivity : BindingActivity(R.layout.activity_communication) {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ goInputInfoActivity()
+ }
+
+ private fun goInputInfoActivity() {
+ binding.btnStart.setOnClickListener {
+ startActivity(Intent(this, InputInfoActivity::class.java))
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/sopt/umbba_android/presentation/onboarding/InputInfoActivity.kt b/app/src/main/java/com/sopt/umbba_android/presentation/onboarding/InputInfoActivity.kt
index 2cb73f7e..f8221338 100644
--- a/app/src/main/java/com/sopt/umbba_android/presentation/onboarding/InputInfoActivity.kt
+++ b/app/src/main/java/com/sopt/umbba_android/presentation/onboarding/InputInfoActivity.kt
@@ -1,16 +1,30 @@
package com.sopt.umbba_android.presentation.onboarding
+import android.content.Intent
import android.os.Bundle
+import android.text.Editable
+import android.text.TextWatcher
import android.view.View
+import androidx.activity.viewModels
import com.sopt.umbba_android.R
import com.sopt.umbba_android.databinding.ActivityInputInfoBinding
+import com.sopt.umbba_android.presentation.viewmodel.InputInfoViewModel
import com.sopt.umbba_android.util.binding.BindingActivity
+import java.util.regex.Pattern
class InputInfoActivity : BindingActivity(R.layout.activity_input_info),
View.OnClickListener {
+
+ private val viewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding.clickListener = this
+ binding.viewmodel = viewModel
+
+ checkAllInfoComplete()
+ validateName()
+ validateYear()
+ goSelectFamilyActivity()
}
override fun onClick(view: View?) {
@@ -18,4 +32,77 @@ class InputInfoActivity : BindingActivity(R.layout.act
R.id.iv_basic_back -> finish()
}
}
+
+ private fun validateName() {
+ with(binding) {
+ etName.addTextChangedListener(object : TextWatcher {
+ override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {}
+ override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
+ val namePattern = Pattern.compile(HANGUL_PATTERN)
+ if (!etName.text?.matches(namePattern.toRegex())!!) {
+ layoutInputName.error = "*형식이 올바르지 않습니다."
+ } else if (etName.text.toString().length > 7) {
+ layoutInputName.error = "*7글자 이하로 작성해주세요."
+ } else {
+ layoutInputName.error = null
+ }
+ }
+ override fun afterTextChanged(p0: Editable?) {}
+ })
+ }
+ }
+
+ private fun validateYear() {
+ with(binding) {
+ etYear.addTextChangedListener(object : TextWatcher {
+ override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {}
+ override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
+ val yearPattern = Pattern.compile(NUMBER_PATTERN)
+ if (!etYear.text?.matches(yearPattern.toRegex())!!) {
+ layoutInputYear.error = "*형식이 올바르지 않습니다."
+ } else if (etYear.text.toString().length > 4) {
+ layoutInputYear.error = "*4글자로 작성해주세요."
+ } else {
+ layoutInputYear.error = null
+ }
+ }
+ override fun afterTextChanged(p0: Editable?) {}
+ })
+ }
+ }
+
+ private fun checkAllInfoComplete() {
+ viewModel.name.observe(this) {
+ viewModel.checkInfoComplete()
+ }
+ viewModel.man.observe(this) {
+ viewModel.checkInfoComplete()
+ }
+ viewModel.woman.observe(this) {
+ viewModel.checkInfoComplete()
+ }
+ viewModel.year.observe(this) {
+ viewModel.checkInfoComplete()
+ }
+ viewModel.isAllInfoComplete.observe(this) {
+ binding.btnNext.isEnabled =
+ binding.layoutInputName.error.isNullOrEmpty() && binding.layoutInputYear.error.isNullOrEmpty() && binding.etYear.text.toString()
+ .isNotEmpty() && binding.etName.text.toString().isNotEmpty()
+ }
+ }
+
+ private fun goSelectFamilyActivity() {
+ binding.btnNext.setOnClickListener {
+ if (true) { //초대하는 사람
+ startActivity(Intent(this, SelectFamilyActivity::class.java))
+ } else { //초대받는 사람
+ startActivity(Intent(this, QuestActivity::class.java))
+ }
+ }
+ }
+
+ companion object {
+ const val HANGUL_PATTERN = "^[가-힣]*$"
+ const val NUMBER_PATTERN = "^([12]\\d{3})*$"
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/sopt/umbba_android/presentation/onboarding/OnboardingFinishActivity.kt b/app/src/main/java/com/sopt/umbba_android/presentation/onboarding/OnboardingFinishActivity.kt
new file mode 100644
index 00000000..b42ee09f
--- /dev/null
+++ b/app/src/main/java/com/sopt/umbba_android/presentation/onboarding/OnboardingFinishActivity.kt
@@ -0,0 +1,12 @@
+package com.sopt.umbba_android.presentation.onboarding
+
+import androidx.appcompat.app.AppCompatActivity
+import android.os.Bundle
+import com.sopt.umbba_android.R
+
+class OnboardingFinishActivity : AppCompatActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_onboarding_finish)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/sopt/umbba_android/presentation/onboarding/SelectFamilyActivity.kt b/app/src/main/java/com/sopt/umbba_android/presentation/onboarding/SelectFamilyActivity.kt
index b70826cd..66861144 100644
--- a/app/src/main/java/com/sopt/umbba_android/presentation/onboarding/SelectFamilyActivity.kt
+++ b/app/src/main/java/com/sopt/umbba_android/presentation/onboarding/SelectFamilyActivity.kt
@@ -1,17 +1,26 @@
package com.sopt.umbba_android.presentation.onboarding
+import android.content.Intent
import android.os.Bundle
import android.view.View
+import androidx.activity.viewModels
import com.sopt.umbba_android.R
import com.sopt.umbba_android.databinding.ActivitySelectFamilyBinding
+import com.sopt.umbba_android.presentation.viewmodel.SelectFamilyViewModel
import com.sopt.umbba_android.util.binding.BindingActivity
class SelectFamilyActivity :
BindingActivity(R.layout.activity_select_family),
View.OnClickListener {
+
+ private val viewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding.clickListener = this
+ binding.viewmodel = viewModel
+
+ checkAllSelectFamilyComplete()
+ goQuestActivity()
}
override fun onClick(view: View?) {
@@ -19,4 +28,48 @@ class SelectFamilyActivity :
R.id.iv_basic_back -> finish()
}
}
+
+ private fun checkAllSelectFamilyComplete() {
+ viewModel.parent.observe(this) {
+ viewModel.checkSelectFamily()
+ addMoreQuestion()
+ modifyMoreQuestion()
+ }
+ viewModel.child.observe(this) {
+ viewModel.checkSelectFamily()
+ addMoreQuestion()
+ modifyMoreQuestion()
+ }
+ viewModel.mom.observe(this) {
+ viewModel.checkSelectFamily()
+ }
+ viewModel.dad.observe(this) {
+ viewModel.checkSelectFamily()
+ }
+ viewModel.isAllSelectFamily.observe(this) {
+ binding.btnNext.isEnabled = it
+ }
+ }
+
+ private fun addMoreQuestion() {
+ if (binding.chip1.isCheckable || binding.chip2.isCheckable) {
+ binding.clMore.visibility = View.VISIBLE
+ }
+ }
+
+ private fun modifyMoreQuestion() {
+ if (binding.chip1.isChecked) {
+ binding.chip3.text = "엄마"
+ binding.chip4.text = "아빠"
+ } else {
+ binding.chip3.text = "아들"
+ binding.chip4.text = "딸"
+ }
+ }
+
+ private fun goQuestActivity() {
+ binding.btnNext.setOnClickListener {
+ startActivity(Intent(this, QuestActivity::class.java))
+ }
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/sopt/umbba_android/presentation/onboarding/SetTimeActivity.kt b/app/src/main/java/com/sopt/umbba_android/presentation/onboarding/SetTimeActivity.kt
index 382b7590..2d75a416 100644
--- a/app/src/main/java/com/sopt/umbba_android/presentation/onboarding/SetTimeActivity.kt
+++ b/app/src/main/java/com/sopt/umbba_android/presentation/onboarding/SetTimeActivity.kt
@@ -1,5 +1,6 @@
package com.sopt.umbba_android.presentation.onboarding
+import android.content.Intent
import android.os.Bundle
import android.view.View
import com.sopt.umbba_android.R
@@ -12,8 +13,10 @@ class SetTimeActivity : BindingActivity(R.layout.activit
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding.clickListener = this
+
customTimePickerInterval()
setDefaultTime()
+ goOnboardingFinishActivity()
}
override fun onClick(view: View?) {
@@ -30,4 +33,11 @@ class SetTimeActivity : BindingActivity(R.layout.activit
binding.tpTime.hour = 23
binding.tpTime.minute = 0
}
+
+ private fun goOnboardingFinishActivity() {
+ //if 푸시알림 허용 시
+ startActivity(Intent(this, OnboardingFinishActivity::class.java))
+ // else 푸시알림 비허용 시 못 넘어감
+ TODO("푸시알림 권한 체크")
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/sopt/umbba_android/presentation/qna/AnswerViewModel.kt b/app/src/main/java/com/sopt/umbba_android/presentation/qna/AnswerViewModel.kt
index 1dbb102d..a76a7fbf 100644
--- a/app/src/main/java/com/sopt/umbba_android/presentation/qna/AnswerViewModel.kt
+++ b/app/src/main/java/com/sopt/umbba_android/presentation/qna/AnswerViewModel.kt
@@ -3,7 +3,6 @@ package com.sopt.umbba_android.presentation.qna
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
-import com.sopt.umbba_android.data.model.response.AnswerResponseDto
class AnswerViewModel : ViewModel() {
var answer = MutableLiveData()
diff --git a/app/src/main/java/com/sopt/umbba_android/presentation/splash/OnboardingActivity.kt b/app/src/main/java/com/sopt/umbba_android/presentation/splash/OnboardingActivity.kt
new file mode 100644
index 00000000..e0b2a89f
--- /dev/null
+++ b/app/src/main/java/com/sopt/umbba_android/presentation/splash/OnboardingActivity.kt
@@ -0,0 +1,32 @@
+package com.sopt.umbba_android.presentation.splash
+
+import android.os.Build.VERSION.SDK_INT
+import android.os.Bundle
+import coil.ImageLoader
+import coil.decode.GifDecoder
+import coil.decode.ImageDecoderDecoder
+import coil.load
+import com.sopt.umbba_android.R
+import com.sopt.umbba_android.databinding.ActivityOnboardingBinding
+import com.sopt.umbba_android.util.binding.BindingActivity
+
+class OnboardingActivity : BindingActivity(R.layout.activity_onboarding) {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ initLogoGif()
+ }
+
+ private fun initLogoGif() {
+ val imageLoader = ImageLoader.Builder(applicationContext)
+ .components {
+ if (SDK_INT >= 28) {
+ add(ImageDecoderDecoder.Factory())
+ } else {
+ add(GifDecoder.Factory())
+ }
+ }.build()
+
+ binding.ivLogoGif.load(R.raw.splash_logo, imageLoader = imageLoader)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/sopt/umbba_android/presentation/viewmodel/InputInfoViewModel.kt b/app/src/main/java/com/sopt/umbba_android/presentation/viewmodel/InputInfoViewModel.kt
new file mode 100644
index 00000000..b8336000
--- /dev/null
+++ b/app/src/main/java/com/sopt/umbba_android/presentation/viewmodel/InputInfoViewModel.kt
@@ -0,0 +1,21 @@
+package com.sopt.umbba_android.presentation.viewmodel
+
+import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.ViewModel
+
+class InputInfoViewModel : ViewModel() {
+ val name = MutableLiveData()
+ val man = MutableLiveData()
+ val woman = MutableLiveData()
+ val year = MutableLiveData()
+
+ val isAllInfoComplete = MutableLiveData()
+
+ fun checkInfoComplete() {
+ return if (!name.value.isNullOrEmpty() && !year.value.isNullOrEmpty() && ((man.value == true) || (woman.value == true))) {
+ isAllInfoComplete.value = true
+ } else {
+ isAllInfoComplete.value = false
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/sopt/umbba_android/presentation/viewmodel/SelectFamilyViewModel.kt b/app/src/main/java/com/sopt/umbba_android/presentation/viewmodel/SelectFamilyViewModel.kt
new file mode 100644
index 00000000..59617bea
--- /dev/null
+++ b/app/src/main/java/com/sopt/umbba_android/presentation/viewmodel/SelectFamilyViewModel.kt
@@ -0,0 +1,17 @@
+package com.sopt.umbba_android.presentation.viewmodel
+
+import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.ViewModel
+
+class SelectFamilyViewModel : ViewModel() {
+ val parent = MutableLiveData()
+ val child = MutableLiveData()
+ val mom = MutableLiveData()
+ val dad = MutableLiveData()
+
+ val isAllSelectFamily = MutableLiveData()
+
+ fun checkSelectFamily() {
+ isAllSelectFamily.value = (parent.value == true || child.value == true) && (mom.value == true || dad.value == true)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/color/sel_btn_pri500_text.xml b/app/src/main/res/color/sel_btn_pri500_text.xml
index 42ceda1f..24904c6d 100644
--- a/app/src/main/res/color/sel_btn_pri500_text.xml
+++ b/app/src/main/res/color/sel_btn_pri500_text.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/color/sel_btn_white_text.xml b/app/src/main/res/color/sel_btn_white_text.xml
new file mode 100644
index 00000000..02c0d19a
--- /dev/null
+++ b/app/src/main/res/color/sel_btn_white_text.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/color/sel_choice_chip_pri500_text.xml b/app/src/main/res/color/sel_choice_chip_text.xml
similarity index 100%
rename from app/src/main/res/color/sel_choice_chip_pri500_text.xml
rename to app/src/main/res/color/sel_choice_chip_text.xml
diff --git a/app/src/main/res/drawable/ic_check_48.xml b/app/src/main/res/drawable/ic_check_48.xml
new file mode 100644
index 00000000..1c5a4110
--- /dev/null
+++ b/app/src/main/res/drawable/ic_check_48.xml
@@ -0,0 +1,13 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_circle_check_48.xml b/app/src/main/res/drawable/ic_circle_check_48.xml
new file mode 100644
index 00000000..5ae7daec
--- /dev/null
+++ b/app/src/main/res/drawable/ic_circle_check_48.xml
@@ -0,0 +1,20 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_close_grey.xml b/app/src/main/res/drawable/ic_close_grey.xml
new file mode 100644
index 00000000..739f8e71
--- /dev/null
+++ b/app/src/main/res/drawable/ic_close_grey.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_no_check_48.xml b/app/src/main/res/drawable/ic_no_check_48.xml
new file mode 100644
index 00000000..2292f109
--- /dev/null
+++ b/app/src/main/res/drawable/ic_no_check_48.xml
@@ -0,0 +1,13 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_no_circle_check_48.xml b/app/src/main/res/drawable/ic_no_circle_check_48.xml
new file mode 100644
index 00000000..cdd69722
--- /dev/null
+++ b/app/src/main/res/drawable/ic_no_circle_check_48.xml
@@ -0,0 +1,20 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/sel_btn_agree.xml b/app/src/main/res/drawable/sel_btn_agree.xml
new file mode 100644
index 00000000..0fd56b3f
--- /dev/null
+++ b/app/src/main/res/drawable/sel_btn_agree.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/sel_btn_agree_circle.xml b/app/src/main/res/drawable/sel_btn_agree_circle.xml
new file mode 100644
index 00000000..0d46ba64
--- /dev/null
+++ b/app/src/main/res/drawable/sel_btn_agree_circle.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/sel_btn_next_agree.xml b/app/src/main/res/drawable/sel_btn_next_agree.xml
new file mode 100644
index 00000000..aa05795f
--- /dev/null
+++ b/app/src/main/res/drawable/sel_btn_next_agree.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/shape_grey_line_1dp_rect.xml b/app/src/main/res/drawable/shape_grey_line_1dp_rect.xml
new file mode 100644
index 00000000..02041e7a
--- /dev/null
+++ b/app/src/main/res/drawable/shape_grey_line_1dp_rect.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_agree_privacy_use.xml b/app/src/main/res/layout/activity_agree_privacy_use.xml
new file mode 100644
index 00000000..768d8c6e
--- /dev/null
+++ b/app/src/main/res/layout/activity_agree_privacy_use.xml
@@ -0,0 +1,208 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_communication.xml b/app/src/main/res/layout/activity_communication.xml
new file mode 100644
index 00000000..decc7454
--- /dev/null
+++ b/app/src/main/res/layout/activity_communication.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_input_info.xml b/app/src/main/res/layout/activity_input_info.xml
index 0b55cfe9..06115dca 100644
--- a/app/src/main/res/layout/activity_input_info.xml
+++ b/app/src/main/res/layout/activity_input_info.xml
@@ -12,6 +12,10 @@
+
+
@@ -123,14 +133,14 @@
@@ -149,6 +160,7 @@
style="@style/ChoiceChipStyle"
android:layout_width="128dp"
android:layout_height="wrap_content"
+ android:checked="@={viewmodel.woman}"
android:text="@string/woman"
app:chipMinHeight="52dp" />
@@ -183,7 +195,11 @@
android:layout_height="wrap_content"
android:layout_marginHorizontal="24dp"
android:layout_marginTop="12dp"
+ android:layout_marginBottom="4dp"
android:textSize="16sp"
+ app:endIconDrawable="@drawable/ic_close_grey"
+ app:endIconMode="clear_text"
+ app:endIconTint="@color/grey_800"
app:hintAnimationEnabled="false"
app:hintEnabled="false"
app:layout_constraintBottom_toBottomOf="parent"
@@ -197,7 +213,9 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/please_input_birth_year"
- android:textColor="@color/black" />
+ android:maxLines="1"
+ android:text="@={viewmodel.year}"
+ android:textColor="@color/umbba_black" />
@@ -212,7 +230,8 @@
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginHorizontal="24dp"
- android:layout_marginVertical="24dp"
+ android:layout_marginTop="12dp"
+ android:layout_marginBottom="24dp"
android:background="@drawable/sel_btn_next"
android:enabled="false"
android:stateListAnimator="@null"
diff --git a/app/src/main/res/layout/activity_invite.xml b/app/src/main/res/layout/activity_invite.xml
index 8c445931..c350abf6 100644
--- a/app/src/main/res/layout/activity_invite.xml
+++ b/app/src/main/res/layout/activity_invite.xml
@@ -28,7 +28,7 @@
style="@style/BrandTypeBigRegular20"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginTop="16dp"
+ android:layout_marginTop="2dp"
android:text="@string/app_title"
android:textColor="@color/primary_500"
app:layout_constraintEnd_toEndOf="parent"
@@ -51,7 +51,7 @@
style="@style/AndroidBody3Bold16"
android:layout_width="match_parent"
android:layout_height="60dp"
- android:layout_marginHorizontal="21dp"
+ android:layout_marginHorizontal="24dp"
android:layout_marginBottom="12dp"
android:background="@drawable/shape_gradient_btn_r50_rect"
android:enabled="true"
@@ -88,7 +88,7 @@
android:id="@+id/btn_input_code"
android:layout_width="match_parent"
android:layout_height="60dp"
- android:layout_marginHorizontal="21dp"
+ android:layout_marginHorizontal="24dp"
android:layout_marginVertical="24dp"
android:background="@drawable/shape_pri500_btn_stroke_r50_rect"
android:stateListAnimator="@null"
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index cbb24183..2d624cb8 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -28,7 +28,7 @@
style="@style/BrandTypeBigRegular20"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginTop="16dp"
+ android:layout_marginTop="2dp"
android:text="@string/app_title"
android:textColor="@color/primary_500"
app:layout_constraintEnd_toEndOf="parent"
diff --git a/app/src/main/res/layout/activity_onboarding.xml b/app/src/main/res/layout/activity_onboarding.xml
new file mode 100644
index 00000000..35b0346c
--- /dev/null
+++ b/app/src/main/res/layout/activity_onboarding.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_onboarding_finish.xml b/app/src/main/res/layout/activity_onboarding_finish.xml
new file mode 100644
index 00000000..683863b7
--- /dev/null
+++ b/app/src/main/res/layout/activity_onboarding_finish.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_question_answer.xml b/app/src/main/res/layout/activity_question_answer.xml
index 9942269c..c9c947a6 100644
--- a/app/src/main/res/layout/activity_question_answer.xml
+++ b/app/src/main/res/layout/activity_question_answer.xml
@@ -148,7 +148,7 @@
android:background="@drawable/sel_btn_answer"
android:stateListAnimator="@null"
android:text="@string/btn_question_answer"
- android:textColor="@color/sel_btn_pri500_text"
+ android:textColor="@color/sel_btn_white_text"
app:layout_constraintBottom_toBottomOf="parent" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_select_family.xml b/app/src/main/res/layout/activity_select_family.xml
index ba0a2c86..221f1cb6 100644
--- a/app/src/main/res/layout/activity_select_family.xml
+++ b/app/src/main/res/layout/activity_select_family.xml
@@ -13,6 +13,10 @@
name="clickListener"
type="android.view.View.OnClickListener" />
+
+
@@ -89,6 +95,7 @@
style="@style/ChoiceChipStyle"
android:layout_width="128dp"
android:layout_height="wrap_content"
+ android:checked="@={viewmodel.child}"
android:text="@string/child"
app:chipMinHeight="52dp" />
@@ -103,7 +110,8 @@
android:layout_marginHorizontal="28dp"
android:layout_marginTop="12dp"
android:background="@drawable/shape_g400_stroke_r8_rect"
- app:layout_constraintTop_toBottomOf="@id/cl_family">
+ app:layout_constraintTop_toBottomOf="@id/cl_family"
+ android:visibility="gone">
@@ -144,6 +154,7 @@
style="@style/ChoiceChipStyle"
android:layout_width="128dp"
android:layout_height="wrap_content"
+ android:checked="@={viewmodel.dad}"
android:text="@string/dad"
app:chipMinHeight="52dp" />
diff --git a/app/src/main/res/layout/activity_set_time.xml b/app/src/main/res/layout/activity_set_time.xml
index c431c186..9183298a 100644
--- a/app/src/main/res/layout/activity_set_time.xml
+++ b/app/src/main/res/layout/activity_set_time.xml
@@ -65,11 +65,9 @@
android:layout_marginHorizontal="24dp"
android:layout_marginVertical="24dp"
android:background="@drawable/sel_btn_next"
- android:enabled="true"
android:stateListAnimator="@null"
android:text="@string/btn_next"
- android:textColor="@color/white"
- android:textSize="16sp"
+ android:textColor="@color/umbba_white"
app:layout_constraintBottom_toBottomOf="parent" />
diff --git a/app/src/main/res/layout/fragment_back_answer_dialog.xml b/app/src/main/res/layout/fragment_back_answer_dialog.xml
index 5687747d..2d82c9fb 100644
--- a/app/src/main/res/layout/fragment_back_answer_dialog.xml
+++ b/app/src/main/res/layout/fragment_back_answer_dialog.xml
@@ -26,12 +26,13 @@
질문 확인하기
- 상대에게 교신을 보낼 차례야\n초대를 수락받으면 문답이 시작돼
+ 상대를 초대할 차례야\n상대방이 수락하면 문답이 시작돼
초대코드 복사
- 초대장 보내기
+ 카카오톡으로 초대 보내기
답변을 저장하시겠어요?
@@ -109,4 +109,20 @@
상대와의 연결이 끊겼습니다
새로운 상대와 함께하려면\n회원탈퇴 후 이용해주세요
+
+ 과거에 도착했어!\n앞으로 나눌 이야기가 많을 거야
+
+
+ 전체 동의하기
+ 본인은 만 14세 이상이며, 엄빠도 어렸다 서비스 이용약관, 개인정보 수집 및 이용에 모두 동의합니다.
+ [필수] 만 14세 이상입니다.
+ 엄빠도 어렸다 서비스를 이용하기 위해서는 만 14세 이상이 되어야 합니다. 만 14세 미만의 이용자의 경우 서비스 이용이 제한됩니다.
+ [필수] 서비스 이용약관에 동의합니다.
+ [필수] 개인정보 수집 및 이용에 동의합니다.
+ \'(주)이승준 컴퍼니\'(이하 \'회사\')가 운영하는 \'엄빠도 어렸다\'는 개인정보보호법 제30조 의거 이용자의 개인정보보호와 권익을 보호하고 관련된 고충 및 애로사항을 신속하게 처리하기 위해 아래의 개인정보처리방침을 제정·운영하고 있습니다.
+
+
+ 전화 받기
+ 오래된 공중전화에서 수신음이 들린다
+
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index d4b1395c..58950ba3 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -15,8 +15,10 @@
- true
- @color/error_red
- @drawable/ic_close
+ - @color/error_red
- @color/error_red
- @style/ErrorTextAppearance
+ - @color/error_red
- @color/grey_800
- 50dp
@@ -26,9 +28,10 @@
@@ -62,7 +66,7 @@
- @font/pretendard_regular
- normal
- 16sp
- - @color/sel_choice_chip_pri500_text
+ - @color/sel_choice_chip_text
- center