diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 9f3d4b89..edf2f071 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -80,6 +80,26 @@
android:exported="false"
android:screenOrientation="portrait"
tools:ignore="LockedOrientationActivity" />
+
+
+
+
(R.layout.activity_new_group) {
+ private val viewModel: NewGroupViewModel by viewModels()
+ private lateinit var fragmentList: ArrayList
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ initLayout()
+ addListeners()
+ collectData()
+ }
+
+ private fun initLayout() {
+ navigateToNewGroupInfo()
+ setPlanFragmentStateAdapter()
+ }
+
+ private fun addListeners() {
+ binding.btnNewGroupNext.setOnClickListener {
+ when (binding.vpNewGroup.currentItem) {
+ fragmentList.size - LAST_INDEX_OFFSET -> {
+ navigateToNewGroupAnnouncement()
+ finish()
+ }
+
+ else -> binding.vpNewGroup.currentItem++
+ }
+ }
+
+ binding.includeNewGroupTopbar.ivAllTopbarArrowWithTitleArrowLeft.setOnClickListener {
+ navigateToPreviousPage()
+ }
+
+ binding.ivNewGroupTopbarInfo.setOnClickListener {
+ navigateToNewGroupInfo()
+ }
+ }
+
+ private fun collectData() {
+ viewModel.currentPage.flowWithLifecycle(lifecycle).onEach { currentPage ->
+ when (currentPage) {
+ fragmentList.size - LAST_INDEX_OFFSET ->
+ binding.btnNewGroupNext.text =
+ stringOf(R.string.new_group_create)
+
+ else -> binding.btnNewGroupNext.text = stringOf(R.string.new_group_next)
+ }
+ }.launchIn(lifecycleScope)
+ }
+
+ private fun setPlanFragmentStateAdapter() {
+ fragmentList = ArrayList()
+ fragmentList.apply {
+ add(NewGroupInputFragment())
+ add(NewGroupKeywordFragment())
+ add(NewGroupCreateFragment())
+ }
+
+ val adapter = PingleFragmentStateAdapter(fragmentList, this)
+ with(binding.vpNewGroup) {
+ this.adapter = adapter
+ isUserInputEnabled = false
+
+ registerOnPageChangeCallback(object :
+ ViewPager2.OnPageChangeCallback() {
+ override fun onPageSelected(position: Int) {
+ super.onPageSelected(position)
+ viewModel.setCurrentPage(position)
+ }
+ })
+ }
+ }
+
+ private fun navigateToNewGroupInfo() {
+ Intent(this, NewGroupInfoActivity::class.java).apply {
+ startActivity(
+ this,
+ ActivityOptions.makeCustomAnimation(this@NewGroupActivity, R.anim.slide_up, 0)
+ .toBundle()
+ )
+ }
+ }
+
+ private fun navigateToNewGroupAnnouncement() {
+ Intent(this, NewGroupAnnouncementActivity::class.java).apply {
+ startActivity(this)
+ }
+ }
+
+ private fun navigateToPreviousPage() {
+ when (binding.vpNewGroup.currentItem) {
+ FIRST_PAGE -> finish()
+ else -> binding.vpNewGroup.currentItem--
+ }
+ }
+
+ companion object {
+ const val FIRST_PAGE = 0
+ const val LAST_INDEX_OFFSET = 1
+ }
+}
diff --git a/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/NewGroupViewModel.kt b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/NewGroupViewModel.kt
new file mode 100644
index 00000000..dffb977b
--- /dev/null
+++ b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/NewGroupViewModel.kt
@@ -0,0 +1,21 @@
+package org.sopt.pingle.presentation.ui.newgroup
+
+import androidx.lifecycle.ViewModel
+import dagger.hilt.android.lifecycle.HiltViewModel
+import javax.inject.Inject
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.asStateFlow
+
+@HiltViewModel
+class NewGroupViewModel @Inject constructor() : ViewModel() {
+ private val _currentPage = MutableStateFlow(FIRST_PAGE_POSITION)
+ val currentPage get() = _currentPage.asStateFlow()
+
+ fun setCurrentPage(position: Int) {
+ _currentPage.value = position
+ }
+
+ companion object {
+ const val FIRST_PAGE_POSITION = 0
+ }
+}
diff --git a/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupannouncement/NewGroupAnnouncementActivity.kt b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupannouncement/NewGroupAnnouncementActivity.kt
new file mode 100644
index 00000000..c05556b2
--- /dev/null
+++ b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupannouncement/NewGroupAnnouncementActivity.kt
@@ -0,0 +1,56 @@
+package org.sopt.pingle.presentation.ui.newgroup.newgroupannouncement
+
+import android.content.Intent
+import android.os.Bundle
+import androidx.activity.OnBackPressedCallback
+import dagger.hilt.android.AndroidEntryPoint
+import org.sopt.pingle.R
+import org.sopt.pingle.databinding.ActivityNewGroupAnnouncementBinding
+import org.sopt.pingle.presentation.ui.main.MainActivity
+import org.sopt.pingle.presentation.ui.newgroup.newgroupcodeshare.NewGroupCodeShareActivity
+import org.sopt.pingle.util.base.BindingActivity
+
+@AndroidEntryPoint
+class NewGroupAnnouncementActivity :
+ BindingActivity(R.layout.activity_new_group_announcement) {
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ addListeners()
+ }
+
+ private fun addListeners() {
+ onBackPressedCallBack()
+ binding.btnNewGroupAnnouncementInvitation.setOnClickListener {
+ navigateToNewGroupShare()
+ }
+ binding.tvNewGroupAnnouncementHome.setOnClickListener {
+ navigateToHome()
+ }
+ }
+
+ private fun navigateToNewGroupShare() {
+ Intent(this, NewGroupCodeShareActivity::class.java).apply {
+ startActivity(this)
+ }
+ }
+
+ private fun navigateToHome() {
+ Intent(this, MainActivity::class.java).apply {
+ startActivity(this)
+ finish()
+ }
+ }
+
+ private fun onBackPressedCallBack() {
+ onBackPressedDispatcher.addCallback(
+ this,
+ object : OnBackPressedCallback(true) {
+ override fun handleOnBackPressed() {
+ navigateToHome()
+ }
+ }
+ )
+ }
+}
diff --git a/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupcodeshare/NewGroupCodeShareActivity.kt b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupcodeshare/NewGroupCodeShareActivity.kt
new file mode 100644
index 00000000..d113cb3d
--- /dev/null
+++ b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupcodeshare/NewGroupCodeShareActivity.kt
@@ -0,0 +1,28 @@
+package org.sopt.pingle.presentation.ui.newgroup.newgroupcodeshare
+
+import android.os.Bundle
+import dagger.hilt.android.AndroidEntryPoint
+import org.sopt.pingle.R
+import org.sopt.pingle.databinding.ActivityNewGroupCodeShareBinding
+import org.sopt.pingle.util.base.BindingActivity
+
+@AndroidEntryPoint
+class NewGroupCodeShareActivity :
+ BindingActivity(R.layout.activity_new_group_code_share) {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ initLayout()
+ addListeners()
+ }
+
+ private fun initLayout() {
+ binding.etNewGroupCodeShareCode.editText.isEnabled = false
+ }
+
+ private fun addListeners() {
+ binding.includeNewGroupCodeShareTopbar.ivAllTopbarArrowWithTitleArrowLeft.setOnClickListener {
+ finish()
+ }
+ }
+}
diff --git a/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupcreate/NewGroupCreateFragment.kt b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupcreate/NewGroupCreateFragment.kt
new file mode 100644
index 00000000..6cb579b3
--- /dev/null
+++ b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupcreate/NewGroupCreateFragment.kt
@@ -0,0 +1,17 @@
+package org.sopt.pingle.presentation.ui.newgroup.newgroupcreate
+
+import android.os.Bundle
+import android.view.View
+import dagger.hilt.android.AndroidEntryPoint
+import org.sopt.pingle.R
+import org.sopt.pingle.databinding.FragmentNewGroupCreateBinding
+import org.sopt.pingle.util.base.BindingFragment
+
+@AndroidEntryPoint
+class NewGroupCreateFragment :
+ BindingFragment(R.layout.fragment_new_group_create) {
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ }
+}
diff --git a/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupinfo/NewGroupInfoActivity.kt b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupinfo/NewGroupInfoActivity.kt
new file mode 100644
index 00000000..c39a0f92
--- /dev/null
+++ b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupinfo/NewGroupInfoActivity.kt
@@ -0,0 +1,23 @@
+package org.sopt.pingle.presentation.ui.newgroup.newgroupinfo
+
+import android.os.Bundle
+import dagger.hilt.android.AndroidEntryPoint
+import org.sopt.pingle.R
+import org.sopt.pingle.databinding.ActivityNewGroupInfoBinding
+import org.sopt.pingle.util.base.BindingActivity
+
+@AndroidEntryPoint
+class NewGroupInfoActivity :
+ BindingActivity(R.layout.activity_new_group_info) {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ addListeners()
+ }
+
+ private fun addListeners() {
+ binding.ivNewGroupInfoX.setOnClickListener {
+ finish()
+ }
+ }
+}
diff --git a/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupinput/NewGroupInputFragment.kt b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupinput/NewGroupInputFragment.kt
new file mode 100644
index 00000000..4b2c9c7e
--- /dev/null
+++ b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupinput/NewGroupInputFragment.kt
@@ -0,0 +1,16 @@
+package org.sopt.pingle.presentation.ui.newgroup.newgroupinput
+
+import android.os.Bundle
+import android.view.View
+import dagger.hilt.android.AndroidEntryPoint
+import org.sopt.pingle.R
+import org.sopt.pingle.databinding.FragmentNewGroupInputBinding
+import org.sopt.pingle.util.base.BindingFragment
+
+@AndroidEntryPoint
+class NewGroupInputFragment :
+ BindingFragment(R.layout.fragment_new_group_input) {
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ }
+}
diff --git a/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupkeyword/NewGroupKeywordFragment.kt b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupkeyword/NewGroupKeywordFragment.kt
new file mode 100644
index 00000000..d07ec839
--- /dev/null
+++ b/app/src/main/java/org/sopt/pingle/presentation/ui/newgroup/newgroupkeyword/NewGroupKeywordFragment.kt
@@ -0,0 +1,46 @@
+package org.sopt.pingle.presentation.ui.newgroup.newgroupkeyword
+
+import android.os.Bundle
+import android.view.View
+import com.google.android.material.chip.Chip
+import dagger.hilt.android.AndroidEntryPoint
+import org.sopt.pingle.R
+import org.sopt.pingle.databinding.FragmentNewGroupKeywordBinding
+import org.sopt.pingle.util.base.BindingFragment
+
+@AndroidEntryPoint
+class NewGroupKeywordFragment :
+ BindingFragment(R.layout.fragment_new_group_keyword) {
+ private val itemList =
+ listOf(Item(1, "연합동아리"), Item(2, "교내동아리"), Item(3, "학생회"), Item(4, "대학교"))
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ initLayout()
+ }
+
+ private fun initLayout() {
+ setChipKeyword()
+ }
+
+ private fun setChipKeyword() {
+ binding.cgNewGroupKeyword.removeAllViews()
+
+ for (item in itemList) {
+ val chip =
+ layoutInflater.inflate(R.layout.view_new_group_chip_keyword, null, false) as Chip
+ chip.text = item.name
+ chip.setOnCheckedChangeListener { _, isChecked ->
+ when (isChecked) {
+ true -> chip.setTextAppearance(R.style.TextAppearance_Pingle_Sub_Semi_16)
+ false -> chip.setTextAppearance(R.style.TextAppearance_Pingle_Body_Med_16)
+ }
+ }
+ binding.cgNewGroupKeyword.addView(chip)
+ }
+ }
+
+ // TODO Api연결시 response로 변경 예정
+ data class Item(val id: Int, val name: String)
+}
diff --git a/app/src/main/java/org/sopt/pingle/presentation/ui/onboarding/onboarding/OnboardingActivity.kt b/app/src/main/java/org/sopt/pingle/presentation/ui/onboarding/onboarding/OnboardingActivity.kt
index 8009ce7a..40c877ab 100644
--- a/app/src/main/java/org/sopt/pingle/presentation/ui/onboarding/onboarding/OnboardingActivity.kt
+++ b/app/src/main/java/org/sopt/pingle/presentation/ui/onboarding/onboarding/OnboardingActivity.kt
@@ -5,9 +5,9 @@ import android.os.Bundle
import org.sopt.pingle.R
import org.sopt.pingle.databinding.ActivityOnboardingBinding
import org.sopt.pingle.presentation.ui.joingroup.JoinGroupSearchActivity
+import org.sopt.pingle.presentation.ui.newgroup.NewGroupActivity
import org.sopt.pingle.util.activity.setDoubleBackPressToExit
import org.sopt.pingle.util.base.BindingActivity
-import org.sopt.pingle.util.context.navigateToWebView
class OnboardingActivity :
BindingActivity(R.layout.activity_onboarding) {
@@ -25,7 +25,7 @@ class OnboardingActivity :
}
binding.includeOnboardingGroupNew.root.setOnClickListener {
- startActivity(navigateToWebView(NEW_GROUP_LINK))
+ navigateToNewGroup()
}
}
@@ -35,8 +35,9 @@ class OnboardingActivity :
}
}
- companion object {
- const val NEW_GROUP_LINK =
- "https://docs.google.com/forms/d/10WxvEzSVRrRvRGXsYf9Z5oXv4HsNuAwG2QicB4bY0aY/edit"
+ private fun navigateToNewGroup() {
+ Intent(this, NewGroupActivity::class.java).apply {
+ startActivity(this)
+ }
}
}
diff --git a/app/src/main/java/org/sopt/pingle/util/component/PingleEditText.kt b/app/src/main/java/org/sopt/pingle/util/component/PingleEditText.kt
index ca8fd57b..e60acda5 100644
--- a/app/src/main/java/org/sopt/pingle/util/component/PingleEditText.kt
+++ b/app/src/main/java/org/sopt/pingle/util/component/PingleEditText.kt
@@ -6,6 +6,7 @@ import android.content.res.TypedArray
import android.text.InputFilter
import android.util.AttributeSet
import android.view.LayoutInflater
+import android.view.View
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.databinding.DataBindingUtil
import org.sopt.pingle.R
@@ -45,9 +46,30 @@ class PingleEditText @JvmOverloads constructor(
binding.etEditText.hint = hint
val maxLength = getInt(R.styleable.PingleEditText_pingleEditTextMaxLength, -1)
- if (maxLength > 0) {
+ if (maxLength > INITIAL_LENGTH) {
binding.etEditText.filters = arrayOf(InputFilter.LengthFilter(maxLength))
}
+
+ val checkVisibilityValue =
+ getInt(R.styleable.PingleEditText_pingleEditTextCheckVisibility, View.GONE)
+ val copyVisibilityValue =
+ getInt(R.styleable.PingleEditText_pingleEditTextCopyVisibility, View.GONE)
+ binding.btnEditCheck.visibility = visibility(checkVisibilityValue)
+ binding.ivEditCopy.visibility = visibility(copyVisibilityValue)
}
}
+
+ private fun visibility(visibilityValue: Int) = when (visibilityValue) {
+ VISIBLE_VALUE -> View.VISIBLE
+ INVISIBLE_VALUE -> View.INVISIBLE
+ GONE_VALUE -> View.GONE
+ else -> View.GONE
+ }
+
+ companion object {
+ const val INITIAL_LENGTH = 0
+ const val VISIBLE_VALUE = 0
+ const val INVISIBLE_VALUE = 1
+ const val GONE_VALUE = 2
+ }
}
diff --git a/app/src/main/res/anim/slide_up.xml b/app/src/main/res/anim/slide_up.xml
new file mode 100644
index 00000000..f5aa59b8
--- /dev/null
+++ b/app/src/main/res/anim/slide_up.xml
@@ -0,0 +1,7 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/color/selector_pingle_tag_l_text_color.xml b/app/src/main/res/color/selector_pingle_tag_l_text_color.xml
index 39c53871..a4cc5a19 100644
--- a/app/src/main/res/color/selector_pingle_tag_l_text_color.xml
+++ b/app/src/main/res/color/selector_pingle_tag_l_text_color.xml
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/color/selector_plan_recruitment_btn.xml b/app/src/main/res/color/selector_plan_recruitment_btn_background.xml
similarity index 100%
rename from app/src/main/res/color/selector_plan_recruitment_btn.xml
rename to app/src/main/res/color/selector_plan_recruitment_btn_background.xml
diff --git a/app/src/main/res/drawable-xhdpi/img_group_graphic.png b/app/src/main/res/drawable-xhdpi/img_group_graphic.png
new file mode 100644
index 00000000..f524baf1
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/img_group_graphic.png differ
diff --git a/app/src/main/res/drawable-xhdpi/img_info_impossible.png b/app/src/main/res/drawable-xhdpi/img_info_impossible.png
new file mode 100644
index 00000000..22217108
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/img_info_impossible.png differ
diff --git a/app/src/main/res/drawable-xhdpi/img_info_reissue.png b/app/src/main/res/drawable-xhdpi/img_info_reissue.png
new file mode 100644
index 00000000..2c00f471
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/img_info_reissue.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/img_group_graphic.png b/app/src/main/res/drawable-xxhdpi/img_group_graphic.png
new file mode 100644
index 00000000..7b7db705
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/img_group_graphic.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/img_info_impossible.png b/app/src/main/res/drawable-xxhdpi/img_info_impossible.png
new file mode 100644
index 00000000..6359ce7b
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/img_info_impossible.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/img_info_reissue.png b/app/src/main/res/drawable-xxhdpi/img_info_reissue.png
new file mode 100644
index 00000000..4e5429ca
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/img_info_reissue.png differ
diff --git a/app/src/main/res/drawable/ic_all_copy_24.xml b/app/src/main/res/drawable/ic_all_copy_24.xml
new file mode 100644
index 00000000..b9d17a0d
--- /dev/null
+++ b/app/src/main/res/drawable/ic_all_copy_24.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_all_info_24.xml b/app/src/main/res/drawable/ic_all_info_24.xml
new file mode 100644
index 00000000..60409b05
--- /dev/null
+++ b/app/src/main/res/drawable/ic_all_info_24.xml
@@ -0,0 +1,16 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/img_group_graphic.png b/app/src/main/res/drawable/img_group_graphic.png
new file mode 100644
index 00000000..af85a009
Binary files /dev/null and b/app/src/main/res/drawable/img_group_graphic.png differ
diff --git a/app/src/main/res/drawable/img_info_impossible.png b/app/src/main/res/drawable/img_info_impossible.png
new file mode 100644
index 00000000..5c71f891
Binary files /dev/null and b/app/src/main/res/drawable/img_info_impossible.png differ
diff --git a/app/src/main/res/drawable/img_info_reissue.png b/app/src/main/res/drawable/img_info_reissue.png
new file mode 100644
index 00000000..b47f0a87
Binary files /dev/null and b/app/src/main/res/drawable/img_info_reissue.png differ
diff --git a/app/src/main/res/layout/activity_new_group.xml b/app/src/main/res/layout/activity_new_group.xml
new file mode 100644
index 00000000..0992e40f
--- /dev/null
+++ b/app/src/main/res/layout/activity_new_group.xml
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_new_group_announcement.xml b/app/src/main/res/layout/activity_new_group_announcement.xml
new file mode 100644
index 00000000..3a8c1470
--- /dev/null
+++ b/app/src/main/res/layout/activity_new_group_announcement.xml
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_new_group_code_share.xml b/app/src/main/res/layout/activity_new_group_code_share.xml
new file mode 100644
index 00000000..4e6b7774
--- /dev/null
+++ b/app/src/main/res/layout/activity_new_group_code_share.xml
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_new_group_info.xml b/app/src/main/res/layout/activity_new_group_info.xml
new file mode 100644
index 00000000..a28b972d
--- /dev/null
+++ b/app/src/main/res/layout/activity_new_group_info.xml
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/edit_text_pingle.xml b/app/src/main/res/layout/edit_text_pingle.xml
index b50717ca..48830588 100644
--- a/app/src/main/res/layout/edit_text_pingle.xml
+++ b/app/src/main/res/layout/edit_text_pingle.xml
@@ -4,6 +4,7 @@
xmlns:tools="http://schemas.android.com/tools">
+
@@ -41,8 +42,43 @@
android:textColor="@color/white"
android:textColorHint="@color/g_07"
android:textCursorDrawable="@drawable/shape_pingle_green_solid_width_1"
- app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintEnd_toStartOf="@id/layout_edit_visibility"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_title" />
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_new_group_create.xml b/app/src/main/res/layout/fragment_new_group_create.xml
new file mode 100644
index 00000000..68ff435e
--- /dev/null
+++ b/app/src/main/res/layout/fragment_new_group_create.xml
@@ -0,0 +1,141 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_new_group_input.xml b/app/src/main/res/layout/fragment_new_group_input.xml
new file mode 100644
index 00000000..637400c8
--- /dev/null
+++ b/app/src/main/res/layout/fragment_new_group_input.xml
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_new_group_keyword.xml b/app/src/main/res/layout/fragment_new_group_keyword.xml
new file mode 100644
index 00000000..9d55e2b8
--- /dev/null
+++ b/app/src/main/res/layout/fragment_new_group_keyword.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/view_all_topbar_arrow_with_title.xml b/app/src/main/res/layout/view_all_topbar_arrow_with_title.xml
index e113a951..ae35c343 100644
--- a/app/src/main/res/layout/view_all_topbar_arrow_with_title.xml
+++ b/app/src/main/res/layout/view_all_topbar_arrow_with_title.xml
@@ -40,6 +40,5 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/iv_all_topbar_arrow_with_title_arrow_left"
tools:text="단체 입장하기" />
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/view_new_group_chip_keyword.xml b/app/src/main/res/layout/view_new_group_chip_keyword.xml
new file mode 100644
index 00000000..beceb0a2
--- /dev/null
+++ b/app/src/main/res/layout/view_new_group_chip_keyword.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml
index 40a14f00..b0239a5e 100644
--- a/app/src/main/res/values/attrs.xml
+++ b/app/src/main/res/values/attrs.xml
@@ -4,6 +4,16 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c023fe68..c83c598f 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -92,7 +92,44 @@
현재 개최된 핑글이 없어요\n핑글을 직접 개최해보세요!
검색 결과가 없어요
-
+
+ 신규 단체 개설하기
+ 다음으로
+ 개설하기
+
+
+ 신규 단체 개설 안내
+ 단체 개설자는 탈퇴할 수 없어요
+ 해당 단체의 초대코드 및 구성원을\n관리할 책임자가 없어지기 때문이에요.
+ 탈퇴를 원할 경우, 핑글에게 문의하기를 통해\n개설자를 변경해주셔야 해요.
+ 초대 코드가 유출되었다면\n핑글에게 문의 후\n재발급할 수 있어요
+
+
+ 속해있는 단체의\n이름을 알려주세요!
+ 단체명을 입력해주세요
+ 단체명
+ ex. 단체 공식 이메일, 개설자님의 이메일
+ 대표 이메일
+ 해당 이메일은 초대 코드 공유 및 단체 관리를 위해 사용될 예정입니다
+
+
+ 단체가\n개설되었어요!
+ %s에 친구들을 초대하고
+ 핑글 여정을 함께해보세요!
+ 친구 초대하러 가기
+ 홈으로 시작하기
+
+
+ 단체 정보를\n확인해주세요
+ 대표 이메일
+
+
+ 친구 초대하기
+ 초대 코드를\n확인하세요
+ 초대코드는 나의 단체 페이지에서 다시 확인할 수 있어요
+ 공유하기
+
+
나중에 만드시겠어요?
나가기
다음으로
@@ -104,7 +141,7 @@
원하는 장소에서 사람들과 갖는 모임을 뜻해요
핑글 개최하러 가기
-
+
잠깐! 나가실건가요?
지금까지 입력한 정보는 전부 사라져요
이어서 작성하기
@@ -198,7 +235,7 @@
핑글에 오신걸\n환영합니다!
이미 등록된\n 단체가 있어요
새로운 단체를\n등록하고 싶어요
-
+
우리의 모임, PINGLE
원하는 장소에서 사람들과 갖는\n나만의 모임을 뜻해요
@@ -235,4 +272,7 @@
초대코드 복사하기
공유하기
핑글 앱을 다운받고, %s 사람들을 만나보세요!\n\n%s %s\n\n %s
+
+
+ 중복 확인
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 789605ec..094f007d 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -60,10 +60,18 @@
- 8dp
- @dimen/button_corner_radius
- @style/TextAppearance.Pingle.Title.Semi.24
- - @color/selector_plan_recruitment_btn
+ - @color/selector_plan_recruitment_btn_background
- @color/selector_plan_recruitment_btn_text
+
+