Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Design/#37] 개인정보 이용동의, 온보딩 완료 화면 UI 구현 #44

Merged
merged 12 commits into from
Jul 11, 2023
10 changes: 9 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,17 @@
android:supportsRtl="true"
android:theme="@style/Theme.Umbbaandroid"
tools:targetApi="31">
<activity
android:name=".presentation.login.AgreePrivacyUseActivity"
android:exported="false"
android:screenOrientation="portrait"/>
<activity
android:name=".presentation.onboarding.OnboardingFinishActivity"
android:exported="false"
android:screenOrientation="portrait"/>
<activity
android:name=".presentation.onboarding.SetTimeActivity"
android:exported="true"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".presentation.invite.InviteActivity"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package com.sopt.umbba_android.presentation.login

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.view.View
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.util.binding.BindingActivity
import java.util.regex.Pattern

class AgreePrivacyUseActivity : BindingActivity<ActivityAgreePrivacyUseBinding>(R.layout.activity_agree_privacy_use) {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

setHyperLinkAndColorInTermsTextView()
setHyperLinkAndColorInPrivacyTextView()
}

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))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

link text는 color나 bold를 이런식으로 줘야하네용 새롭게 알고갑니다

}

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
}
}
Original file line number Diff line number Diff line change
@@ -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)
}
}
13 changes: 13 additions & 0 deletions app/src/main/res/drawable/ic_check_48.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="48"
android:viewportHeight="48">
<path
android:pathData="M32,18L21,29L16,24"
android:strokeLineJoin="round"
android:strokeWidth="1.5"
android:fillColor="#00000000"
android:strokeColor="#C87759"
android:strokeLineCap="round"/>
</vector>
20 changes: 20 additions & 0 deletions app/src/main/res/drawable/ic_circle_check_48.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="48"
android:viewportHeight="48">
<path
android:pathData="M29,21L22,28L19,25"
android:strokeLineJoin="round"
android:strokeWidth="1.5"
android:fillColor="#00000000"
android:strokeColor="#C87759"
android:strokeLineCap="round"/>
<path
android:pathData="M24,33C28.971,33 33,28.971 33,24C33,19.029 28.971,15 24,15C19.029,15 15,19.029 15,24C15,28.971 19.029,33 24,33Z"
android:strokeLineJoin="round"
android:strokeWidth="1.5"
android:fillColor="#00000000"
android:strokeColor="#C87759"
android:strokeLineCap="round"/>
</vector>
13 changes: 13 additions & 0 deletions app/src/main/res/drawable/ic_no_check_48.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="48"
android:viewportHeight="48">
<path
android:pathData="M32,18L21,29L16,24"
android:strokeLineJoin="round"
android:strokeWidth="1.5"
android:fillColor="#00000000"
android:strokeColor="#BBADA4"
android:strokeLineCap="round"/>
</vector>
20 changes: 20 additions & 0 deletions app/src/main/res/drawable/ic_no_circle_check_48.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="48"
android:viewportHeight="48">
<path
android:pathData="M29,21L22,28L19,25"
android:strokeLineJoin="round"
android:strokeWidth="1.5"
android:fillColor="#00000000"
android:strokeColor="#BBADA4"
android:strokeLineCap="round"/>
<path
android:pathData="M24,33C28.971,33 33,28.971 33,24C33,19.029 28.971,15 24,15C19.029,15 15,19.029 15,24C15,28.971 19.029,33 24,33Z"
android:strokeLineJoin="round"
android:strokeWidth="1.5"
android:fillColor="#00000000"
android:strokeColor="#BBADA4"
android:strokeLineCap="round"/>
</vector>
5 changes: 5 additions & 0 deletions app/src/main/res/drawable/sel_btn_next_agree.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/shape_g400_btn_r50_rect" android:state_enabled="false" />
<item android:drawable="@drawable/shape_pri500_btn_stroke_r50_rect" android:state_enabled="true" />
</selector>
5 changes: 5 additions & 0 deletions app/src/main/res/drawable/shape_grey_line_1dp_rect.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/grey_400" />
<size android:height="1dp" />
</shape>
204 changes: 204 additions & 0 deletions app/src/main/res/layout/activity_agree_privacy_use.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,204 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">

<data>

</data>

<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/umbba_white"
tools:context=".presentation.login.AgreePrivacyUseActivity">

<ImageView
android:id="@+id/iv_logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="60dp"
android:src="@drawable/ic_umbba_logo"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<TextView
android:id="@+id/tv_app_title"
style="@style/BrandTypeBigRegular20"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:text="@string/app_title"
android:textColor="@color/primary_500"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_logo" />

<TextView
android:id="@+id/tv_app_description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/app_description"
android:textColor="@color/primary_500"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_app_title" />

<ImageView
android:id="@+id/iv_line1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="30dp"
android:layout_marginTop="88dp"
android:src="@drawable/shape_grey_line_1dp_rect"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_app_description" />

<TextView
android:id="@+id/tv_all_agree"
style="@style/AndroidBody1_1SemiBold16"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="28dp"
android:layout_marginTop="48dp"
android:text="@string/all_agree"
android:textColor="@color/umbba_black"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_line1" />

<ImageView
android:id="@+id/btn_all_agree_check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="33dp"
android:layout_marginEnd="28dp"
android:src="@drawable/ic_no_check_48"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/iv_line1" />

<TextView
android:id="@+id/tv_all_agree_description"
style="@style/AndroidBody2_2Regular12"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="28dp"
android:layout_marginTop="14dp"
android:layout_marginEnd="14dp"
android:text="@string/all_agree_description"
android:textColor="@color/grey_800"
app:layout_constraintEnd_toStartOf="@id/btn_all_agree_check"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_all_agree" />

<TextView
android:id="@+id/tv_up_14"
style="@style/AndroidBody2_2Regular12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="28dp"
android:layout_marginTop="29dp"
android:text="@string/up_14"
android:textColor="@color/umbba_black"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_all_agree_description" />

<ImageView
android:id="@+id/btn_up_14"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:layout_marginEnd="28dp"
android:src="@drawable/ic_no_circle_check_48"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_all_agree_description" />

<TextView
android:id="@+id/tv_up_14_description"
style="@style/AndroidCaptionRegular10"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="28dp"
android:layout_marginTop="9dp"
android:layout_marginEnd="7dp"
android:text="@string/up_14_description"
android:textColor="@color/grey_800"
app:layout_constraintEnd_toStartOf="@+id/btn_up_14"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_up_14" />

<TextView
android:id="@+id/tv_agree_terms_and_condition"
style="@style/AndroidBody2_2Regular12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="28dp"
android:layout_marginTop="29dp"
android:text="@string/agree_terms_and_condition"
android:textColor="@color/umbba_black"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_up_14_description" />

<ImageView
android:id="@+id/btn_agree_terms_and_condition"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:layout_marginEnd="28dp"
android:src="@drawable/ic_no_circle_check_48"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_up_14_description" />

<TextView
android:id="@+id/tv_agree_privacy"
style="@style/AndroidBody2_2Regular12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/agree_privacy"
android:textColor="@color/umbba_black"
android:layout_marginStart="28dp"
android:layout_marginTop="34dp"
app:layout_constraintTop_toBottomOf="@id/tv_agree_terms_and_condition"
app:layout_constraintStart_toStartOf="parent"/>

<ImageView
android:id="@+id/btn_agree_privacy"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_no_circle_check_48"
android:layout_marginEnd="28dp"
android:layout_marginTop="17dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_agree_terms_and_condition" />

<TextView
android:id="@+id/tv_agree_privacy_description"
style="@style/AndroidCaptionRegular10"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@string/agree_privacy_description"
android:textColor="@color/grey_800"
android:layout_marginTop="9dp"
android:layout_marginStart="28dp"
android:layout_marginEnd="7dp"
app:layout_constraintTop_toBottomOf="@id/tv_agree_privacy"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@id/btn_agree_privacy"/>

<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btn_next"
style="@style/AndroidBody1_1SemiBold16"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginHorizontal="21dp"
android:layout_marginVertical="24dp"
android:background="@drawable/sel_btn_next_agree"
android:enabled="false"
android:stateListAnimator="@null"
android:text="@string/btn_start_code"
android:textColor="@color/sel_btn_pri500_text"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
2 changes: 1 addition & 1 deletion app/src/main/res/layout/activity_invite.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
Loading