diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3543d305..fadadfb3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -41,6 +41,11 @@
+
+
+
+
diff --git a/app/src/main/java/com/going/going/di/DataSourceModule.kt b/app/src/main/java/com/going/going/di/DataSourceModule.kt
index 292409d3..9e7eb073 100644
--- a/app/src/main/java/com/going/going/di/DataSourceModule.kt
+++ b/app/src/main/java/com/going/going/di/DataSourceModule.kt
@@ -1,6 +1,8 @@
package com.going.going.di
+import com.going.data.datasource.LoginDataSource
import com.going.data.datasource.MockDataSource
+import com.going.data.datasourceImpl.LoginDataSourceImpl
import com.going.data.datasourceImpl.MockDataSourceImpl
import dagger.Module
import dagger.Provides
@@ -17,4 +19,10 @@ object DataSourceModule {
fun provideMockDataSource(mockDataSourceImpl: MockDataSourceImpl): MockDataSource =
mockDataSourceImpl
-}
\ No newline at end of file
+ @Provides
+ @Singleton
+ fun provideLoginDataSource(loginDataSourceImpl: LoginDataSourceImpl): LoginDataSource =
+ loginDataSourceImpl
+
+
+}
diff --git a/app/src/main/java/com/going/going/di/RepositoryModule.kt b/app/src/main/java/com/going/going/di/RepositoryModule.kt
index 5d46141b..54247470 100644
--- a/app/src/main/java/com/going/going/di/RepositoryModule.kt
+++ b/app/src/main/java/com/going/going/di/RepositoryModule.kt
@@ -1,6 +1,8 @@
package com.going.going.di
+import com.going.data.repositoryImpl.LoginRepositoryImpl
import com.going.data.repositoryImpl.MockRepositoryImpl
+import com.going.domain.repository.LoginRepository
import com.going.domain.repository.MockRepository
import dagger.Module
import dagger.Provides
@@ -17,4 +19,8 @@ object RepositoryModule {
fun provideMockRepository(mockRepositoryImpl: MockRepositoryImpl): MockRepository =
mockRepositoryImpl
-}
\ No newline at end of file
+ @Provides
+ @Singleton
+ fun provideLoginRepository(loginRepositoryImpl: LoginRepositoryImpl): LoginRepository =
+ loginRepositoryImpl
+}
diff --git a/app/src/main/java/com/going/going/di/ServiceModule.kt b/app/src/main/java/com/going/going/di/ServiceModule.kt
index 18e3873f..1f39737b 100644
--- a/app/src/main/java/com/going/going/di/ServiceModule.kt
+++ b/app/src/main/java/com/going/going/di/ServiceModule.kt
@@ -1,5 +1,6 @@
package com.going.going.di
+import com.going.data.service.LoginService
import com.going.data.service.MockService
import dagger.Module
import dagger.Provides
@@ -17,4 +18,9 @@ object ServiceModule {
fun provideMockService(retrofit: Retrofit): MockService =
retrofit.create(MockService::class.java)
-}
\ No newline at end of file
+ @Provides
+ @Singleton
+ fun provideLoginService(retrofit: Retrofit): LoginService =
+ retrofit.create(LoginService::class.java)
+
+}
diff --git a/data/src/main/java/com/going/data/datasource/LoginDataSource.kt b/data/src/main/java/com/going/data/datasource/LoginDataSource.kt
new file mode 100644
index 00000000..254e1b4c
--- /dev/null
+++ b/data/src/main/java/com/going/data/datasource/LoginDataSource.kt
@@ -0,0 +1,12 @@
+package com.going.data.datasource
+
+import com.going.data.dto.BaseResponse
+import com.going.data.dto.request.RequestLoginDto
+import com.going.data.dto.response.LoginResponseDto
+
+interface LoginDataSource {
+ suspend fun postLogin(
+ Authorization: String,
+ platform: RequestLoginDto,
+ ): BaseResponse
+}
diff --git a/data/src/main/java/com/going/data/datasourceImpl/LoginDataSourceImpl.kt b/data/src/main/java/com/going/data/datasourceImpl/LoginDataSourceImpl.kt
new file mode 100644
index 00000000..b2f5c59b
--- /dev/null
+++ b/data/src/main/java/com/going/data/datasourceImpl/LoginDataSourceImpl.kt
@@ -0,0 +1,18 @@
+package com.going.data.datasourceImpl
+
+import com.going.data.datasource.LoginDataSource
+import com.going.data.dto.BaseResponse
+import com.going.data.dto.request.RequestLoginDto
+import com.going.data.dto.response.LoginResponseDto
+import com.going.data.service.LoginService
+import javax.inject.Inject
+
+class LoginDataSourceImpl @Inject constructor(
+ private val loginService: LoginService,
+) : LoginDataSource {
+ override suspend fun postLogin(
+ Authorization: String,
+ platform: RequestLoginDto,
+ ): BaseResponse =
+ loginService.postSignin(Authorization, platform)
+}
diff --git a/data/src/main/java/com/going/data/dto/BaseResponse.kt b/data/src/main/java/com/going/data/dto/BaseResponse.kt
new file mode 100644
index 00000000..bf7834d1
--- /dev/null
+++ b/data/src/main/java/com/going/data/dto/BaseResponse.kt
@@ -0,0 +1,14 @@
+package com.going.data.dto
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class BaseResponse(
+ @SerialName("status")
+ val status: Int,
+ @SerialName("message")
+ val message: String,
+ @SerialName("data")
+ val data: T,
+)
diff --git a/data/src/main/java/com/going/data/dto/request/RequestLoginDto.kt b/data/src/main/java/com/going/data/dto/request/RequestLoginDto.kt
new file mode 100644
index 00000000..a10a4310
--- /dev/null
+++ b/data/src/main/java/com/going/data/dto/request/RequestLoginDto.kt
@@ -0,0 +1,10 @@
+package com.going.data.dto.request
+
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class RequestLoginDto(
+ @SerialName("platform")
+ val platform: String
+)
diff --git a/data/src/main/java/com/going/data/dto/response/LoginResponseDto.kt b/data/src/main/java/com/going/data/dto/response/LoginResponseDto.kt
new file mode 100644
index 00000000..c52b73e6
--- /dev/null
+++ b/data/src/main/java/com/going/data/dto/response/LoginResponseDto.kt
@@ -0,0 +1,37 @@
+package com.going.data.dto.response
+
+import com.going.domain.entity.response.AuthTokenModel
+import kotlinx.serialization.SerialName
+import kotlinx.serialization.Serializable
+
+@Serializable
+data class LoginResponseDto(
+ @SerialName("accessToken")
+ val accessToken: String,
+ @SerialName("refreshToken")
+ val refreshToken: String,
+) {
+ fun toAuthTokenModel() =
+ AuthTokenModel(accessToken = accessToken, refreshToken = refreshToken)
+}
+
+// @Serializable
+// data class LoginResponseDto(
+// @SerialName("status")
+// val status: Int,
+// @SerialName("message")
+// val message: String,
+// @SerialName("data")
+// val data: Data,
+// ) {
+// @Serializable
+// data class Data(
+// @SerialName("accessToken")
+// val accessToken: String,
+// @SerialName("refreshToken")
+// val refreshToken: String,
+// )
+//
+// fun toAuthTokenModel() =
+// AuthTokenModel(accessToken = data.accessToken, refreshToken = data.refreshToken)
+// }
diff --git a/data/src/main/java/com/going/data/repositoryImpl/LoginRepositoryImpl.kt b/data/src/main/java/com/going/data/repositoryImpl/LoginRepositoryImpl.kt
new file mode 100644
index 00000000..04d5e991
--- /dev/null
+++ b/data/src/main/java/com/going/data/repositoryImpl/LoginRepositoryImpl.kt
@@ -0,0 +1,22 @@
+package com.going.data.repositoryImpl
+
+import com.going.data.datasource.LoginDataSource
+import com.going.data.dto.request.RequestLoginDto
+import com.going.domain.entity.response.AuthTokenModel
+import com.going.domain.repository.LoginRepository
+import javax.inject.Inject
+
+class LoginRepositoryImpl @Inject constructor(
+ private val loginDataSource: LoginDataSource,
+) : LoginRepository {
+ override suspend fun postSignin(
+ Authorization: String,
+ platform: String,
+ ): Result =
+ runCatching {
+ loginDataSource.postLogin(
+ Authorization,
+ RequestLoginDto(platform),
+ ).data.toAuthTokenModel()
+ }
+}
diff --git a/data/src/main/java/com/going/data/service/LoginService.kt b/data/src/main/java/com/going/data/service/LoginService.kt
new file mode 100644
index 00000000..1859e29b
--- /dev/null
+++ b/data/src/main/java/com/going/data/service/LoginService.kt
@@ -0,0 +1,16 @@
+package com.going.data.service
+
+import com.going.data.dto.BaseResponse
+import com.going.data.dto.request.RequestLoginDto
+import com.going.data.dto.response.LoginResponseDto
+import retrofit2.http.Body
+import retrofit2.http.Header
+import retrofit2.http.POST
+
+interface LoginService {
+ @POST("api/users/signin")
+ suspend fun postSignin(
+ @Header("Authorization") Authorization: String,
+ @Body body: RequestLoginDto,
+ ): BaseResponse
+}
diff --git a/domain/src/main/kotlin/com/going/domain/entity/TendencyResultMock.kt b/domain/src/main/kotlin/com/going/domain/entity/TendencyResultMock.kt
new file mode 100644
index 00000000..76eea743
--- /dev/null
+++ b/domain/src/main/kotlin/com/going/domain/entity/TendencyResultMock.kt
@@ -0,0 +1,15 @@
+package com.going.domain.entity
+
+data class TendencyResultMock(
+ val tendencyTitle: String,
+ val tendencySubTitle: String,
+ val tags: List,
+ val tendencyBoxInfo: List,
+) {
+ data class BoxInfo(
+ val title: String,
+ val first: String,
+ val second: String,
+ val third: String,
+ )
+}
diff --git a/domain/src/main/kotlin/com/going/domain/entity/response/AuthTokenModel.kt b/domain/src/main/kotlin/com/going/domain/entity/response/AuthTokenModel.kt
index 38fe35f9..651139d0 100644
--- a/domain/src/main/kotlin/com/going/domain/entity/response/AuthTokenModel.kt
+++ b/domain/src/main/kotlin/com/going/domain/entity/response/AuthTokenModel.kt
@@ -1,7 +1,6 @@
package com.going.domain.entity.response
data class AuthTokenModel(
- val isResigned: Boolean,
val accessToken: String,
val refreshToken: String,
)
diff --git a/domain/src/main/kotlin/com/going/domain/repository/LoginRepository.kt b/domain/src/main/kotlin/com/going/domain/repository/LoginRepository.kt
new file mode 100644
index 00000000..8b70be28
--- /dev/null
+++ b/domain/src/main/kotlin/com/going/domain/repository/LoginRepository.kt
@@ -0,0 +1,10 @@
+package com.going.domain.repository
+
+import com.going.domain.entity.response.AuthTokenModel
+
+interface LoginRepository {
+ suspend fun postSignin(
+ Authorization: String,
+ platform: String,
+ ): Result
+}
diff --git a/presentation/src/main/java/com/going/presentation/auth/LoginActivity.kt b/presentation/src/main/java/com/going/presentation/auth/LoginActivity.kt
index 32c405e7..f46301f3 100644
--- a/presentation/src/main/java/com/going/presentation/auth/LoginActivity.kt
+++ b/presentation/src/main/java/com/going/presentation/auth/LoginActivity.kt
@@ -9,9 +9,11 @@ import com.going.presentation.databinding.ActivityLoginBinding
import com.going.ui.base.BaseActivity
import com.going.ui.extension.UiState
import com.going.ui.extension.setOnSingleClickListener
+import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
+@AndroidEntryPoint
class LoginActivity : BaseActivity(R.layout.activity_login) {
private val viewModel by viewModels()
diff --git a/presentation/src/main/java/com/going/presentation/auth/LoginViewModel.kt b/presentation/src/main/java/com/going/presentation/auth/LoginViewModel.kt
index 54fd0a35..4ab0f59e 100644
--- a/presentation/src/main/java/com/going/presentation/auth/LoginViewModel.kt
+++ b/presentation/src/main/java/com/going/presentation/auth/LoginViewModel.kt
@@ -4,16 +4,23 @@ import android.content.Context
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.going.domain.entity.response.AuthTokenModel
+import com.going.domain.repository.LoginRepository
import com.going.ui.extension.UiState
import com.kakao.sdk.auth.model.OAuthToken
import com.kakao.sdk.common.model.ClientError
import com.kakao.sdk.common.model.ClientErrorCause
import com.kakao.sdk.user.UserApiClient
+import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.launch
+import timber.log.Timber
+import javax.inject.Inject
-class LoginViewModel : ViewModel() {
+@HiltViewModel
+class LoginViewModel @Inject constructor(
+ private val loginRepository: LoginRepository,
+) : ViewModel() {
private val _postChangeTokenState = MutableStateFlow>(UiState.Empty)
val postChangeTokenState: StateFlow> = _postChangeTokenState
@@ -64,19 +71,22 @@ class LoginViewModel : ViewModel() {
viewModelScope.launch {
// 통신 로직
-
- // 성공시 서버에서 준 정보를 넣는 예시 코드
- _postChangeTokenState.value = UiState.Success(
- AuthTokenModel(
- isResigned = true,
- accessToken = "testAccessToekn",
- refreshToken = "testRefreshToekn",
- ),
- )
+ loginRepository.postSignin(accessToken, social).onSuccess {
+ // 성공시 서버에서 준 정보를 넣는 예시 코드
+ Timber.e("성공고오고오고공")
+ _postChangeTokenState.value = UiState.Success(
+ AuthTokenModel(
+ accessToken = "testAccessToekn",
+ refreshToken = "testRefreshToekn",
+ ),
+ )
+ }.onFailure { err ->
+ Timber.e("실패패패패패패")
+ }
}
}
companion object {
- const val KAKAO = "KAKAO"
+ const val KAKAO = "kakao"
}
}
diff --git a/presentation/src/main/java/com/going/presentation/tendencytest/result/TendencyTestResultActivity.kt b/presentation/src/main/java/com/going/presentation/tendencytest/result/TendencyTestResultActivity.kt
new file mode 100644
index 00000000..d4c9c88e
--- /dev/null
+++ b/presentation/src/main/java/com/going/presentation/tendencytest/result/TendencyTestResultActivity.kt
@@ -0,0 +1,83 @@
+package com.going.presentation.tendencytest.result
+
+import android.os.Bundle
+import android.text.SpannableString
+import android.text.Spanned
+import android.text.style.BulletSpan
+import androidx.activity.viewModels
+import com.going.presentation.R
+import com.going.presentation.databinding.ActivityTendencyTestResultBinding
+import com.going.ui.base.BaseActivity
+import com.going.ui.extension.setOnSingleClickListener
+
+class TendencyTestResultActivity :
+ BaseActivity(R.layout.activity_tendency_test_result) {
+ private val viewModel by viewModels()
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ bindTendencyInfo()
+
+ initSaveImgBtnClickListener()
+ initFinishBtnClickListener()
+ }
+
+ private fun bindTendencyInfo() {
+ with(binding) {
+ tvTendencyTestResultTitle.text = getString(R.string.tendency_test_result_title, "찐두릅")
+
+ viewModel.mockTendencyResult.apply {
+ tvTendencyTestResultType.text = tendencyTitle
+ tvTendencyTestResultSubType.text = tendencySubTitle
+
+ tvTendencyTestResultTag1.text = tags[0]
+ tvTendencyTestResultTag2.text = tags[1]
+ tvTendencyTestResultTag3.text = tags[2]
+
+ tvFirstDescriptionTitle.text = tendencyBoxInfo[0].title
+ tvFirstDescriptionFirstText.text =
+ setBulletPoint(tendencyBoxInfo[0].first)
+ tvFirstDescriptionSecondText.text =
+ setBulletPoint(tendencyBoxInfo[0].second)
+ tvFirstDescriptionThirdText.text =
+ setBulletPoint(tendencyBoxInfo[0].third)
+
+ tvSecondDescriptionTitle.text =
+ tendencyBoxInfo[1].title
+ tvSecondDescriptionFirstText.text =
+ setBulletPoint(tendencyBoxInfo[1].first)
+ tvSecondDescriptionSecondText.text =
+ setBulletPoint(tendencyBoxInfo[1].second)
+ tvSecondDescriptionThirdText.text =
+ setBulletPoint(tendencyBoxInfo[1].third)
+
+ tvThirdDescriptionTitle.text = tendencyBoxInfo[2].title
+ tvThirdDescriptionFirstText.text =
+ setBulletPoint(tendencyBoxInfo[2].first)
+ tvThirdDescriptionSecondText.text =
+ setBulletPoint(tendencyBoxInfo[2].second)
+ tvThirdDescriptionThirdText.text =
+ setBulletPoint(tendencyBoxInfo[2].third)
+ }
+ }
+ }
+
+ private fun setBulletPoint(text: String): SpannableString {
+ val string = SpannableString(text)
+ string.setSpan(BulletSpan(10), 0, text.length - 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
+
+ return string
+ }
+
+ private fun initSaveImgBtnClickListener() {
+ binding.btnTendencyTestResultSave.setOnSingleClickListener {
+ // 이미지 저장
+ }
+ }
+
+ private fun initFinishBtnClickListener() {
+ binding.btnTendencyTestResultFinish.setOnSingleClickListener {
+ // 페이지 이동
+ }
+ }
+}
diff --git a/presentation/src/main/java/com/going/presentation/tendencytest/result/TendencyTestResultViewModel.kt b/presentation/src/main/java/com/going/presentation/tendencytest/result/TendencyTestResultViewModel.kt
new file mode 100644
index 00000000..e3a0dd4a
--- /dev/null
+++ b/presentation/src/main/java/com/going/presentation/tendencytest/result/TendencyTestResultViewModel.kt
@@ -0,0 +1,36 @@
+package com.going.presentation.tendencytest.result
+
+import androidx.lifecycle.ViewModel
+import com.going.domain.entity.TendencyResultMock
+
+class TendencyTestResultViewModel : ViewModel() {
+ val mockTendencyResult: TendencyResultMock = TendencyResultMock(
+ tendencyTitle = "배려심 많은 인간 플래너",
+ tendencySubTitle = "꼼꼼하고 세심하게 여행을 준비하는 친구",
+ tags = listOf(
+ "#친구중심",
+ "#꼼꼼함",
+ "#세심함",
+ ),
+ tendencyBoxInfo = listOf(
+ TendencyResultMock.BoxInfo(
+ "이런점이\n좋아요",
+ "같이 가는 친구들을 잘 챙기고 배려해요",
+ "친구들의 의견을 잘 반영해 만족할 수 있는 일정을 계획해요",
+ "꼼꼼하고 부지런해 맡은 일에서 실수가 적어요",
+ ),
+ TendencyResultMock.BoxInfo(
+ "이런점은\n주의해줘요",
+ "완벽주의 성향이 강해 계획이 틀어졌을 때 예민해질 수 있어요",
+ "싸우지 않고 여행하는 것을 중요시 해 갈등의 조짐이 보이면 많은 스트레스를 받아요",
+ "예기치 않은 상황에서 크게 당횡해요",
+ ),
+ TendencyResultMock.BoxInfo(
+ "이런걸\n잘해요",
+ "전반적인 여행 계획 마련",
+ "호텔과 비행기표 예약 및 관리",
+ "기타 행동이 필요한 것들",
+ ),
+ ),
+ )
+}
diff --git a/presentation/src/main/res/drawable/ic_save_btn.xml b/presentation/src/main/res/drawable/ic_save_btn.xml
new file mode 100644
index 00000000..a086bd89
--- /dev/null
+++ b/presentation/src/main/res/drawable/ic_save_btn.xml
@@ -0,0 +1,14 @@
+
+
+
+
diff --git a/presentation/src/main/res/drawable/img_blur.xml b/presentation/src/main/res/drawable/img_blur.xml
new file mode 100644
index 00000000..d3adab03
--- /dev/null
+++ b/presentation/src/main/res/drawable/img_blur.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/presentation/src/main/res/drawable/sel_rounded_corner_button.xml b/presentation/src/main/res/drawable/sel_rounded_corner_button.xml
index 59dbca25..bc06065a 100644
--- a/presentation/src/main/res/drawable/sel_rounded_corner_button.xml
+++ b/presentation/src/main/res/drawable/sel_rounded_corner_button.xml
@@ -4,7 +4,7 @@
-
-
+
diff --git a/presentation/src/main/res/drawable/shape_line_gray100_fill_dash_4.xml b/presentation/src/main/res/drawable/shape_line_gray100_fill_dash_4.xml
new file mode 100644
index 00000000..770457e6
--- /dev/null
+++ b/presentation/src/main/res/drawable/shape_line_gray100_fill_dash_4.xml
@@ -0,0 +1,8 @@
+
+
+
+
diff --git a/presentation/src/main/res/drawable/shape_line_gray100_fill_dash_4_vertical.xml b/presentation/src/main/res/drawable/shape_line_gray100_fill_dash_4_vertical.xml
new file mode 100644
index 00000000..147e1c3f
--- /dev/null
+++ b/presentation/src/main/res/drawable/shape_line_gray100_fill_dash_4_vertical.xml
@@ -0,0 +1,5 @@
+
+
diff --git a/presentation/src/main/res/drawable/shape_rect_10_red300_line.xml b/presentation/src/main/res/drawable/shape_rect_10_red300_line.xml
new file mode 100644
index 00000000..1d7c7b4b
--- /dev/null
+++ b/presentation/src/main/res/drawable/shape_rect_10_red300_line.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/presentation/src/main/res/drawable/shape_rect_4_gray500_fill.xml b/presentation/src/main/res/drawable/shape_rect_4_gray500_fill.xml
new file mode 100644
index 00000000..f25b3620
--- /dev/null
+++ b/presentation/src/main/res/drawable/shape_rect_4_gray500_fill.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
diff --git a/presentation/src/main/res/drawable/shape_rect_6_gray200_line.xml b/presentation/src/main/res/drawable/shape_rect_6_gray200_line.xml
new file mode 100644
index 00000000..661bad29
--- /dev/null
+++ b/presentation/src/main/res/drawable/shape_rect_6_gray200_line.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/presentation/src/main/res/drawable/shape_rect_topleft_8_topright_8_white000_fill.xml b/presentation/src/main/res/drawable/shape_rect_topleft_8_topright_8_white000_fill.xml
new file mode 100644
index 00000000..aed64ec5
--- /dev/null
+++ b/presentation/src/main/res/drawable/shape_rect_topleft_8_topright_8_white000_fill.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
diff --git a/presentation/src/main/res/layout/activity_onboarding_profile_setting.xml b/presentation/src/main/res/layout/activity_onboarding_profile_setting.xml
index 892407ad..6e2ef9f8 100644
--- a/presentation/src/main/res/layout/activity_onboarding_profile_setting.xml
+++ b/presentation/src/main/res/layout/activity_onboarding_profile_setting.xml
@@ -133,9 +133,10 @@
android:background="@drawable/sel_rounded_corner_button"
android:enabled="@{viewModel.isProfileAvailable()}"
android:onClick="@{() -> viewModel.setIsMoveScreenAvailable()}"
+ android:outlineProvider="none"
android:paddingVertical="10dp"
android:text="@string/onboarding_finish_btn"
- android:textColor="@{viewModel.isProfileAvailable() == true ? @color/white_000 : @color/gray_50}"
+ android:textColor="@{viewModel.isProfileAvailable() == true ? @color/white_000 : @color/gray_200}"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
diff --git a/presentation/src/main/res/layout/activity_tendency_test.xml b/presentation/src/main/res/layout/activity_tendency_test.xml
index f543e1ef..46973157 100644
--- a/presentation/src/main/res/layout/activity_tendency_test.xml
+++ b/presentation/src/main/res/layout/activity_tendency_test.xml
@@ -185,9 +185,10 @@
android:layout_marginBottom="22dp"
android:background="@drawable/sel_rounded_corner_button"
android:enabled="@{viewModel.isChecked()}"
+ android:outlineProvider="none"
android:paddingVertical="10dp"
android:text="@{viewModel.step == 9 ? @string/tendency_test_button_final : @string/tendency_test_button_next}"
- android:textColor="@color/white_000"
+ android:textColor="@color/gray_200"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
diff --git a/presentation/src/main/res/layout/activity_tendency_test_result.xml b/presentation/src/main/res/layout/activity_tendency_test_result.xml
new file mode 100644
index 00000000..bd125d0b
--- /dev/null
+++ b/presentation/src/main/res/layout/activity_tendency_test_result.xml
@@ -0,0 +1,489 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/presentation/src/main/res/layout/activity_tendency_test_splash.xml b/presentation/src/main/res/layout/activity_tendency_test_splash.xml
index 40d7cdb7..cde5119f 100644
--- a/presentation/src/main/res/layout/activity_tendency_test_splash.xml
+++ b/presentation/src/main/res/layout/activity_tendency_test_splash.xml
@@ -44,6 +44,7 @@
android:background="@drawable/sel_rounded_corner_button"
android:paddingVertical="10dp"
android:text="@string/tendency_splash_start_btn"
+ android:outlineProvider="none"
android:textColor="@color/white_000"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent"
diff --git a/presentation/src/main/res/values/strings.xml b/presentation/src/main/res/values/strings.xml
index 7e8562ec..3fb11c2d 100644
--- a/presentation/src/main/res/values/strings.xml
+++ b/presentation/src/main/res/values/strings.xml
@@ -30,6 +30,13 @@
나의 여행 성향은?
다음
제출하기
+
+
+ 유형 검사 결과
+ %1$s님의 여행 유형은
+ 다음
+ 다시 해볼래요
+ 이미지로 저장
우리 여행 진행률
diff --git a/presentation/src/main/res/values/themes.xml b/presentation/src/main/res/values/themes.xml
index fd90a6d8..ff6063f4 100644
--- a/presentation/src/main/res/values/themes.xml
+++ b/presentation/src/main/res/values/themes.xml
@@ -35,7 +35,7 @@