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

Feature/signup #88

Merged
merged 4 commits into from
Jul 6, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@
tools:targetApi="31">
<activity
android:name=".feature.signup.StartPophoryActivity"
android:exported="false" />
android:exported="false"
android:theme="@style/Theme.App.StartPophory"
/>

<meta-data
android:name="io.sentry.dsn"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ class SignUpActivity : AppCompatActivity(), SignUpButtonInterface {
}

private fun clickToolbarBackButton() {
val backPosition = currentPosition - 1
binding.btnBack.setOnClickListener {
when (currentPosition) {
0 -> {
Expand All @@ -46,11 +45,11 @@ class SignUpActivity : AppCompatActivity(), SignUpButtonInterface {
}

1 -> {
binding.viewpager.currentItem = backPosition
binding.viewpager.currentItem = 0
}

2 -> {
binding.viewpager.currentItem = backPosition
binding.viewpager.currentItem = 1
}
}
}
Expand All @@ -71,8 +70,8 @@ class SignUpActivity : AppCompatActivity(), SignUpButtonInterface {
}
supportFragmentManager.beginTransaction().add(dialog,"").commitAllowingStateLoss()
// 중복된 아이디가 존재하지 않을 경우
// val nextPosition = currentPosition + 1
// binding.viewpager.currentItem = nextPosition
val nextPosition = currentPosition + 1
binding.viewpager.currentItem = nextPosition
}

2 -> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,23 @@
package com.teampophory.pophory.feature.signup

import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.text.buildSpannedString
import androidx.core.text.color
import androidx.core.view.isGone
import androidx.core.view.isVisible
import androidx.core.widget.doAfterTextChanged
import androidx.fragment.app.Fragment
import com.teampophory.pophory.R
import com.teampophory.pophory.common.fragment.colorOf
import com.teampophory.pophory.common.fragment.toast
import com.teampophory.pophory.common.primitive.textAppearance
import com.teampophory.pophory.common.view.viewBinding
import com.teampophory.pophory.databinding.FragmentSignUpFirstBinding
import timber.log.Timber
import java.util.regex.Pattern

class SignUpFirstFragment : Fragment() {
Expand All @@ -29,6 +36,7 @@ class SignUpFirstFragment : Fragment() {
super.onViewCreated(view, savedInstanceState)
binding.tvErrorMessage.isVisible = false
binding.btnDeleteEditText.isGone = true
setSpannableString()
// edittext 상태
setEditText()
// edittext 삭제 버튼
Expand Down Expand Up @@ -83,6 +91,23 @@ class SignUpFirstFragment : Fragment() {
this.buttonState = buttonState
}

private fun setSpannableString() {
val fullText = getString(R.string.sign_up_first_title)
val coloredText = "너의 이름" // 색상을 변경하려는 특정 단어
val splittedText = fullText.split(coloredText)

val text = buildSpannedString {
append(splittedText.getOrNull(0))
color(colorOf(R.color.pophory_purple)) {
textAppearance(requireContext(), R.style.TextAppearance_Pophory_HeadLineBold) {
append(coloredText)
}
}
append(splittedText[1])
}
binding.tvTitle.text = text
}

companion object {
private const val HANGUL_PATTERN = "^[ㄱ-ㅎㅏ-ㅣ가-힣]*\$"
val HANGUL_REGEX: Pattern = Pattern.compile(HANGUL_PATTERN)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,15 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.text.buildSpannedString
import androidx.core.text.color
import androidx.core.view.isGone
import androidx.core.view.isVisible
import androidx.core.widget.doAfterTextChanged
import androidx.fragment.app.Fragment
import com.teampophory.pophory.R
import com.teampophory.pophory.common.fragment.colorOf
import com.teampophory.pophory.common.primitive.textAppearance
import com.teampophory.pophory.common.view.viewBinding
import com.teampophory.pophory.databinding.FragmentSignUpSecondBinding
import java.util.regex.Pattern
Expand All @@ -31,6 +35,7 @@ class SignUpSecondFragment : Fragment() {
binding.btnDeleteEditText.isGone = true
setEditText()
deleteAllEditText()
setSpannableString()
}

private fun deleteAllEditText() {
Expand All @@ -56,9 +61,9 @@ class SignUpSecondFragment : Fragment() {
//글자 수 계산
binding.tvTextCount.text = "(${it.toString().length}/12)"

val pattern = Pattern.compile(ID_PATTERN)
val matcher = pattern.matcher(binding.editTvName.text)
if (!matcher.find()) {
val textMatcher = HANGUL_REGEX.matcher(binding.editTvName.text)
val specialMatcher = SPECIAL_REGEX.matcher(binding.editTvName.text)
if (!textMatcher.find()) {
binding.tvErrorMessage.text = "*올바른 형식의 아이디가 아닙니다"
binding.editTvName.setBackgroundResource(R.drawable.bg_sign_up_edit_text_error)
binding.tvErrorMessage.isVisible = true
Expand All @@ -77,11 +82,32 @@ class SignUpSecondFragment : Fragment() {
}
}

private fun setSpannableString() {
val fullText = getString(R.string.sign_up_second_title)
val coloredText = "포포리 아이디" // 색상을 변경하려는 특정 단어
val splittedText = fullText.split(coloredText)

val text = buildSpannedString {
append(splittedText.getOrNull(0))
color(colorOf(R.color.pophory_purple)) {
textAppearance(requireContext(), R.style.TextAppearance_Pophory_HeadLineBold) {
append(coloredText)
}
}
append(splittedText[1])
}
binding.tvTitle.text = text
}

fun setSignUpButtonInterface(buttonState: SignUpButtonInterface) {
this.buttonState = buttonState
}

companion object {
const val ID_PATTERN = "^(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[._])[a-zA-Z0-9._]*\$"
private const val HANGUL_PATTERN = "^[a-zA-Z0-9._]{4,12}\$"
val HANGUL_REGEX: Pattern = Pattern.compile(HANGUL_PATTERN)

private const val SPECIAL_PATTERN = "^[^._]*$"
val SPECIAL_REGEX: Pattern = Pattern.compile(SPECIAL_PATTERN)
Comment on lines +107 to +111
Copy link
Member

Choose a reason for hiding this comment

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

👍

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,14 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.text.buildSpannedString
import androidx.core.text.color
import androidx.core.view.isVisible
import androidx.fragment.app.Fragment

import com.teampophory.pophory.R
import com.teampophory.pophory.common.fragment.colorOf
import com.teampophory.pophory.common.primitive.textAppearance
import com.teampophory.pophory.common.view.viewBinding
import com.teampophory.pophory.databinding.FragmentSignUpThirdBinding

Expand All @@ -21,37 +27,67 @@ class SignUpThirdFragment : Fragment() {

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setAlbumCoverImage()
selectAlbumCover()
setSpannableString()
}

private fun setAlbumCoverImage() {
//기본 앨범 커버 이미지
binding.ivAlbumCover.setImageResource(R.drawable.ic_album_cover_friends)

}

private fun setAlbumSelectState(number: Int){
with(binding){
ivAlbumSelect1.isVisible = number == 1
ivAlbumSelect2.isVisible = number == 2
ivAlbumSelect3.isVisible = number == 3
ivAlbumSelect4.isVisible = number == 4
}
}

private fun setSpannableString() {
val fullText = getString(R.string.sign_up_third_title)
val coloredText = "앨범 커버" // 색상을 변경하려는 특정 단어
val splittedText = fullText.split(coloredText)

val text = buildSpannedString {
append(splittedText[0])
color(colorOf(R.color.pophory_purple)) {
textAppearance(requireContext(), R.style.TextAppearance_Pophory_HeadLineBold) {
append(coloredText)
}
}
append(splittedText[1])
}
binding.tvTitle.text = text
}

private fun selectAlbumCover() {
binding.ivAlbumSelect1.isVisible = true
binding.ivAlbumSelect2.isVisible = false
binding.ivAlbumSelect3.isVisible = false
binding.ivAlbumSelect4.isVisible = false

binding.ivAlbumCover1.setOnClickListener {
binding.ivAlbumSelect1.isVisible = true
binding.ivAlbumSelect2.isVisible = false
binding.ivAlbumSelect3.isVisible = false
binding.ivAlbumSelect4.isVisible = false
setAlbumSelectState(1)
binding.ivAlbumCover.setImageResource(R.drawable.ic_album_cover_friends)
}
binding.ivAlbumCover2.setOnClickListener {
binding.ivAlbumSelect1.isVisible = false
binding.ivAlbumSelect2.isVisible = true
binding.ivAlbumSelect3.isVisible = false
binding.ivAlbumSelect4.isVisible = false
setAlbumSelectState(2)

binding.ivAlbumCover.setImageResource(R.drawable.ic_album_cover_love)
}
binding.ivAlbumCover3.setOnClickListener {
binding.ivAlbumSelect1.isVisible = false
binding.ivAlbumSelect2.isVisible = false
binding.ivAlbumSelect3.isVisible = true
binding.ivAlbumSelect4.isVisible = false
setAlbumSelectState(3)

binding.ivAlbumCover.setImageResource(R.drawable.ic_album_cover_myalbum)
}
binding.ivAlbumCover4.setOnClickListener {
binding.ivAlbumSelect1.isVisible = false
binding.ivAlbumSelect2.isVisible = false
binding.ivAlbumSelect3.isVisible = false
binding.ivAlbumSelect4.isVisible = true
setAlbumSelectState(4)

binding.ivAlbumCover.setImageResource(R.drawable.ic_album_cover_collectbook)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ package com.teampophory.pophory.feature.signup

import android.content.Intent
import android.os.Bundle
import android.window.OnBackInvokedDispatcher
import androidx.activity.OnBackPressedCallback
import androidx.appcompat.app.AppCompatActivity
import com.teampophory.pophory.common.view.viewBinding
import com.teampophory.pophory.databinding.ActivityStartPophoryBinding
Expand All @@ -11,6 +13,14 @@ class StartPophoryActivity : AppCompatActivity() {

private val binding by viewBinding(ActivityStartPophoryBinding::inflate)

private val callback = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
// 뒤로 버튼 이벤트 처리
val intent = Intent(this@StartPophoryActivity, HomeActivity::class.java)
startActivity(intent)
}
}

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
Expand All @@ -19,5 +29,8 @@ class StartPophoryActivity : AppCompatActivity() {
val intent = Intent(this, HomeActivity::class.java)
startActivity(intent)
}

this.onBackPressedDispatcher.addCallback(this, callback)
}

}
16 changes: 16 additions & 0 deletions app/src/main/res/drawable/kakao_login_button.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="320dp"
android:height="58dp"
android:viewportWidth="320"
android:viewportHeight="58">
<path
android:pathData="M29,0L291,0A29,29 0,0 1,320 29L320,29A29,29 0,0 1,291 58L29,58A29,29 0,0 1,0 29L0,29A29,29 0,0 1,29 0z"
android:fillColor="#FEE500"/>
<path
android:pathData="M93.78,36V23.27H95.71V29.34H95.87L101.19,23.27H103.62L98.49,29L103.64,36H101.3L97.2,30.32L95.71,32.04V36H93.78ZM104.62,33.31C104.61,31.13 106.47,30.57 108.19,30.45C108.82,30.41 110.26,30.33 110.69,30.31L110.69,29.55C110.69,28.47 110.03,27.84 108.75,27.84C107.65,27.84 106.98,28.35 106.78,29.06H104.92C105.09,27.47 106.56,26.33 108.82,26.33C110.34,26.33 112.56,26.89 112.57,29.65V36H110.74V34.7H110.67C110.3,35.41 109.42,36.21 107.84,36.21C106.03,36.21 104.61,35.17 104.62,33.31ZM106.45,33.33C106.45,34.24 107.21,34.71 108.26,34.72C109.79,34.71 110.7,33.69 110.7,32.55L110.69,31.68C110.26,31.71 108.9,31.81 108.45,31.83C107.22,31.92 106.45,32.39 106.45,33.33ZM114.83,36V23.27H116.72V30.48H116.87L120.65,26.46H122.9L119.04,30.55L123.17,36H120.86L117.62,31.71L116.72,32.61V36H114.83ZM123.94,33.31C123.93,31.13 125.79,30.57 127.51,30.45C128.14,30.41 129.57,30.33 130.01,30.31L130.01,29.55C130.01,28.47 129.35,27.84 128.07,27.84C126.96,27.84 126.3,28.35 126.1,29.06H124.24C124.41,27.47 125.88,26.33 128.14,26.33C129.66,26.33 131.88,26.89 131.89,29.65V36H130.06V34.7H129.99C129.62,35.41 128.74,36.21 127.16,36.21C125.35,36.21 123.93,35.17 123.94,33.31ZM125.77,33.33C125.77,34.24 126.52,34.71 127.58,34.72C129.11,34.71 130.02,33.69 130.02,32.55L130.01,31.68C129.58,31.71 128.22,31.81 127.77,31.83C126.54,31.92 125.77,32.39 125.77,33.33ZM138.2,36.19C135.49,36.19 133.72,34.22 133.73,31.27C133.72,28.3 135.49,26.33 138.2,26.33C140.89,26.33 142.64,28.3 142.64,31.27C142.64,34.22 140.89,36.19 138.2,36.19ZM135.61,31.27C135.61,33.09 136.45,34.63 138.2,34.63C139.92,34.63 140.74,33.09 140.74,31.27C140.74,29.44 139.92,27.89 138.2,27.88C136.45,27.89 135.61,29.44 135.61,31.27ZM158.34,34.21V35.61H143.93V34.21H150.27V31.45H145.68V26.44H154.93V24.22H145.65V22.85H156.58V27.77H147.34V30.08H156.95V31.45H151.93V34.21H158.34ZM169.66,25.75C169.64,28.63 171.38,31.53 173.83,32.61L172.82,33.93C171.01,33.06 169.58,31.3 168.84,29.14C168.11,31.46 166.66,33.35 164.77,34.28L163.76,32.87C166.23,31.77 167.97,28.76 167.97,25.75V23.06H169.66V25.75ZM175.25,37.53V21.74H176.92V37.53H175.25ZM184.94,24.57C184.93,26.59 186.32,28.49 188.73,29.3L187.89,30.6C186.1,29.99 184.8,28.76 184.11,27.21C183.43,28.91 182.05,30.25 180.21,30.9L179.31,29.6C181.77,28.77 183.26,26.73 183.27,24.56V24.13H179.8V22.78H188.33V24.13H184.94V24.57ZM181.4,33.36V32.01H191.81V37.49H190.14V33.36H181.4ZM190.14,31.24V21.74H191.81V25.79H194.1V27.19H191.81V31.24H190.14ZM207.26,21.74V28.13H209.79V29.51H207.26V37.49H205.61V21.74H207.26ZM194.9,25.58V24.21H198.79V21.96H200.46V24.21H204.24V25.58H194.9ZM195.71,30.39C195.71,28.25 197.36,26.74 199.63,26.74C201.89,26.74 203.54,28.25 203.55,30.39C203.54,32.55 201.89,34.06 199.63,34.07C197.36,34.06 195.71,32.55 195.71,30.39ZM197.31,30.39C197.3,31.76 198.29,32.68 199.63,32.66C200.97,32.68 201.94,31.76 201.95,30.39C201.94,29.05 200.97,28.12 199.63,28.11C198.29,28.12 197.3,29.05 197.31,30.39ZM223.64,21.74V37.49H221.96V21.74H223.64ZM210.71,33.28C214.89,31.28 216.94,28.44 217.26,24.77H211.46V23.43H218.95C218.95,28.05 216.99,32.04 211.59,34.63L210.71,33.28Z"
android:fillColor="#000000"/>
<path
android:pathData="M43,28.06C43,23.61 38.3,20 32.5,20H32.5C26.7,20 22,23.61 22,28.06C22,30.89 23.91,33.38 26.78,34.82L25.89,38.44C25.69,39.08 25.86,39.11 26.36,38.85L30.77,36.01C31.35,36.08 31.92,36.12 32.5,36.12C38.3,36.12 43,32.51 43,28.06Z"
android:fillColor="#000000"
android:fillType="evenOdd"/>
</vector>
Loading