diff --git a/.gradle/8.7/executionHistory/executionHistory.lock b/.gradle/8.7/executionHistory/executionHistory.lock
index c0e86c9..c01d583 100644
Binary files a/.gradle/8.7/executionHistory/executionHistory.lock and b/.gradle/8.7/executionHistory/executionHistory.lock differ
diff --git a/.gradle/8.7/fileHashes/resourceHashesCache.bin b/.gradle/8.7/fileHashes/resourceHashesCache.bin
index fa9756e..5b50b02 100644
Binary files a/.gradle/8.7/fileHashes/resourceHashesCache.bin and b/.gradle/8.7/fileHashes/resourceHashesCache.bin differ
diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index 7af6019..20475a2 100644
Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe
index 7a75852..17832e6 100644
Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ
diff --git a/.idea/caches/deviceStreaming.xml b/.idea/caches/deviceStreaming.xml
index af74dbf..821dc38 100644
--- a/.idea/caches/deviceStreaming.xml
+++ b/.idea/caches/deviceStreaming.xml
@@ -25,6 +25,17 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index b587519..928df5a 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -9,7 +9,7 @@ android {
defaultConfig {
applicationId = "com.example.killergram_android_v1"
- minSdk = 24
+ minSdk = 26
targetSdk = 34
versionCode = 1
versionName = "1.0"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f49fc44..7c405f3 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,6 +1,6 @@
+ xmlns:tools="http://schemas.android.com/tools">
+ tools:targetApi="31">
+
+
+ android:exported="true">
diff --git a/app/src/main/java/com/example/killergram_android_v1/SplashActivity.kt b/app/src/main/java/com/example/killergram_android_v1/SplashActivity.kt
index 552c3c4..8776d13 100644
--- a/app/src/main/java/com/example/killergram_android_v1/SplashActivity.kt
+++ b/app/src/main/java/com/example/killergram_android_v1/SplashActivity.kt
@@ -10,12 +10,18 @@ import com.example.killergram_android_v1.databinding.ActivitySplashBinding
import com.example.killergram_android_v1.feature.login.LoginActivity
class SplashActivity : AppCompatActivity() {
+ private val binding by lazy {
+ ActivitySplashBinding.inflate(layoutInflater)
+ }
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
- setContentView(R.layout.activity_splash)
+ setContentView(binding.root)
moveToLoginActivity()
+
+
}
private fun moveToLoginActivity() {
diff --git a/app/src/main/java/com/example/killergram_android_v1/feature/enterinfo/EnterGenderActivity.kt b/app/src/main/java/com/example/killergram_android_v1/feature/enterinfo/EnterGenderActivity.kt
index 405187a..8659ad1 100644
--- a/app/src/main/java/com/example/killergram_android_v1/feature/enterinfo/EnterGenderActivity.kt
+++ b/app/src/main/java/com/example/killergram_android_v1/feature/enterinfo/EnterGenderActivity.kt
@@ -1,18 +1,13 @@
package com.example.killergram_android_v1.feature.enterinfo
import android.content.Intent
-import android.graphics.Color
import android.os.Bundle
-import android.provider.CalendarContract.Colors
import android.view.View
-import android.widget.CompoundButton
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
-import androidx.core.view.ViewCompat
-import androidx.core.view.WindowInsetsCompat
-import androidx.core.widget.CompoundButtonCompat
import com.example.killergram_android_v1.R
import com.example.killergram_android_v1.databinding.ActivityEnterGenderBinding
+import com.example.killergram_android_v1.feature.enterinfo.enterSkill.EnterSkillsActivity
class EnterGenderActivity : AppCompatActivity(), View.OnClickListener {
private val binding by lazy {
@@ -22,7 +17,7 @@ class EnterGenderActivity : AppCompatActivity(), View.OnClickListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
- setContentView(R.layout.activity_enter_gender)
+ setContentView(binding.root)
binding.imgLeftArrow.setOnClickListener(this)
binding.btnLogin.setOnClickListener(this)
diff --git a/app/src/main/java/com/example/killergram_android_v1/feature/enterinfo/EnterGradeActivity.kt b/app/src/main/java/com/example/killergram_android_v1/feature/enterinfo/EnterGradeActivity.kt
index 6305246..5966c47 100644
--- a/app/src/main/java/com/example/killergram_android_v1/feature/enterinfo/EnterGradeActivity.kt
+++ b/app/src/main/java/com/example/killergram_android_v1/feature/enterinfo/EnterGradeActivity.kt
@@ -16,7 +16,7 @@ class EnterGradeActivity : AppCompatActivity(), View.OnClickListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
- setContentView(R.layout.activity_enter_grade)
+ setContentView(binding.root)
binding.btnLogin.setOnClickListener(this)
binding.imgLeftArrow.setOnClickListener(this)
diff --git a/app/src/main/java/com/example/killergram_android_v1/feature/enterinfo/EnterNameActivity.kt b/app/src/main/java/com/example/killergram_android_v1/feature/enterinfo/EnterNameActivity.kt
index fea6f2e..7a2c660 100644
--- a/app/src/main/java/com/example/killergram_android_v1/feature/enterinfo/EnterNameActivity.kt
+++ b/app/src/main/java/com/example/killergram_android_v1/feature/enterinfo/EnterNameActivity.kt
@@ -3,12 +3,10 @@ package com.example.killergram_android_v1.feature.enterinfo
import android.content.Intent
import android.os.Bundle
import android.view.View
-import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import com.example.killergram_android_v1.R
import com.example.killergram_android_v1.databinding.ActivityEnterNameBinding
-import com.example.killergram_android_v1.feature.signup.InputEmailActivity
import com.example.killergram_android_v1.feature.signup.SetPasswordActivity
class EnterNameActivity : AppCompatActivity(), View.OnClickListener {
@@ -19,7 +17,7 @@ class EnterNameActivity : AppCompatActivity(), View.OnClickListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
- setContentView(R.layout.activity_enter_name)
+ setContentView(binding.root)
binding.btnLogin.setOnClickListener(this)
binding.imgLeftArrow.setOnClickListener(this)
@@ -27,7 +25,7 @@ class EnterNameActivity : AppCompatActivity(), View.OnClickListener {
override fun onClick(view: View?) {
val enterNameToEnterGrade = Intent(this, EnterGradeActivity::class.java)
- //val enterNameTo = Intent(this, InputEmailActivity::class.java)
+ val enterNameToSetPassword = Intent(this, SetPasswordActivity::class.java)
when(view?.id) {
@@ -35,7 +33,7 @@ class EnterNameActivity : AppCompatActivity(), View.OnClickListener {
startActivity(enterNameToEnterGrade)
}
R.id.img_left_arrow -> {
- Toast.makeText(this, "정보를 입력해주세요!", Toast.LENGTH_LONG)
+ startActivity(enterNameToSetPassword)
}
}
}
diff --git a/app/src/main/java/com/example/killergram_android_v1/feature/enterinfo/EnterSkillsActivity.kt b/app/src/main/java/com/example/killergram_android_v1/feature/enterinfo/EnterSkillsActivity.kt
deleted file mode 100644
index d1d97a2..0000000
--- a/app/src/main/java/com/example/killergram_android_v1/feature/enterinfo/EnterSkillsActivity.kt
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.example.killergram_android_v1.feature.enterinfo
-
-import android.content.Intent
-import android.os.Bundle
-import android.view.View
-import android.widget.Toast
-import androidx.activity.enableEdgeToEdge
-import androidx.appcompat.app.AppCompatActivity
-import androidx.core.view.ViewCompat
-import androidx.core.view.WindowInsetsCompat
-import com.example.killergram_android_v1.R
-import com.example.killergram_android_v1.databinding.ActivityEnterNameBinding
-
-class EnterSkillsActivity : AppCompatActivity(), View.OnClickListener {
- private val binding by lazy {
- ActivityEnterNameBinding.inflate(layoutInflater)
- }
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- enableEdgeToEdge()
- setContentView(R.layout.activity_enter_skills)
-
- binding.btnLogin.setOnClickListener(this)
- binding.imgLeftArrow.setOnClickListener(this)
- }
-
- override fun onClick(view: View?) {
- val enterNameToEnterGrade = Intent(this, EnterGradeActivity::class.java)
- val enterNameToEnterGender = Intent(this, EnterGenderActivity::class.java)
-
-
- when(view?.id) {
- R.id.btn_login -> {
-
- }
- R.id.img_left_arrow -> {
- startActivity(enterNameToEnterGender)
- }
- }
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/killergram_android_v1/feature/enterinfo/enterSkill/EnterSkillsActivity.kt b/app/src/main/java/com/example/killergram_android_v1/feature/enterinfo/enterSkill/EnterSkillsActivity.kt
new file mode 100644
index 0000000..701ee1f
--- /dev/null
+++ b/app/src/main/java/com/example/killergram_android_v1/feature/enterinfo/enterSkill/EnterSkillsActivity.kt
@@ -0,0 +1,97 @@
+package com.example.killergram_android_v1.feature.enterinfo.enterSkill
+
+import android.content.Intent
+import android.os.Bundle
+import android.view.View
+import androidx.activity.enableEdgeToEdge
+import androidx.appcompat.app.AppCompatActivity
+import androidx.appcompat.content.res.AppCompatResources
+import androidx.lifecycle.ViewModelProvider
+import com.example.killergram_android_v1.R
+import com.example.killergram_android_v1.databinding.ActivityEnterSkillsBinding
+import com.example.killergram_android_v1.feature.enterinfo.EnterGenderActivity
+import com.example.killergram_android_v1.feature.home.HomeActivity
+
+class EnterSkillsActivity : AppCompatActivity(), View.OnClickListener {
+ private val binding by lazy {
+ ActivityEnterSkillsBinding.inflate(layoutInflater)
+ }
+
+ private val enterSkillsViewModel by lazy {
+ ViewModelProvider(this@EnterSkillsActivity)[EnterSkillsViewModel::class.java]
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ enableEdgeToEdge()
+ setContentView(binding.root)
+
+ binding.btnLogin.setOnClickListener(this)
+ binding.imgLeftArrow.setOnClickListener(this)
+
+ binding.btnSkill1.setOnClickListener(this)
+ binding.btnSkill2.setOnClickListener(this)
+ binding.btnSkill3.setOnClickListener(this)
+
+ skillViewClickListener()
+ }
+
+ override fun onClick(view: View?) {
+ val enterNameToHome = Intent(this, HomeActivity::class.java)
+ val enterNameToEnterGender = Intent(this, EnterGenderActivity::class.java)
+
+ when(view?.id) {
+ R.id.btn_login -> {
+ startActivity(enterNameToHome)
+ }
+ R.id.img_left_arrow -> {
+ startActivity(enterNameToEnterGender)
+ }
+ R.id.btn_skill_1 -> {
+ setStateCheck(binding.btnSkill1)
+ }
+ R.id.btn_skill_2 -> {
+ setStateCheck(binding.btnSkill2)
+ }
+ R.id.btn_skill_3 -> {
+ setStateCheck(binding.btnSkill3)
+ }
+ }
+ }
+
+ private fun setStateCheck(view: View?) {
+ when(view?.id) {
+ R.id.btn_skill_1 -> {
+ enterSkillsViewModel.onSelectItem(1)
+ }
+ R.id.btn_skill_2 -> {
+ enterSkillsViewModel.onSelectItem(2)
+ }
+ R.id.btn_skill_3 -> {
+ enterSkillsViewModel.onSelectItem(3)
+ }
+ }
+ }
+
+ private fun skillViewClickListener() {
+ enterSkillsViewModel.buttonState.observe(this@EnterSkillsActivity) {
+ when(it) {
+ 1 -> {
+ binding.btnSkill1.background = AppCompatResources.getDrawable(this, R.drawable.button_selected)
+ binding.btnSkill2.background = AppCompatResources.getDrawable(this, R.drawable.button_unselected)
+ binding.btnSkill3.background = AppCompatResources.getDrawable(this, R.drawable.button_unselected)
+ }
+ 2 -> {
+ binding.btnSkill1.background = AppCompatResources.getDrawable(this, R.drawable.button_unselected)
+ binding.btnSkill2.background = AppCompatResources.getDrawable(this, R.drawable.button_selected)
+ binding.btnSkill3.background = AppCompatResources.getDrawable(this, R.drawable.button_unselected)
+ }
+ 3 -> {
+ binding.btnSkill1.background = AppCompatResources.getDrawable(this, R.drawable.button_unselected)
+ binding.btnSkill2.background = AppCompatResources.getDrawable(this, R.drawable.button_unselected)
+ binding.btnSkill3.background = AppCompatResources.getDrawable(this, R.drawable.button_selected)
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/killergram_android_v1/feature/enterinfo/enterSkill/EnterSkillsViewModel.kt b/app/src/main/java/com/example/killergram_android_v1/feature/enterinfo/enterSkill/EnterSkillsViewModel.kt
new file mode 100644
index 0000000..b37d626
--- /dev/null
+++ b/app/src/main/java/com/example/killergram_android_v1/feature/enterinfo/enterSkill/EnterSkillsViewModel.kt
@@ -0,0 +1,14 @@
+package com.example.killergram_android_v1.feature.enterinfo.enterSkill
+
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.ViewModel
+
+class EnterSkillsViewModel : ViewModel() {
+ private val _buttonState: MutableLiveData = MutableLiveData() // setter
+ var buttonState: LiveData = _buttonState // getter
+
+ fun onSelectItem(selectedButton: Int) {
+ _buttonState.value = selectedButton
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/killergram_android_v1/feature/home/HomeActivity.kt b/app/src/main/java/com/example/killergram_android_v1/feature/home/HomeActivity.kt
new file mode 100644
index 0000000..17ba29c
--- /dev/null
+++ b/app/src/main/java/com/example/killergram_android_v1/feature/home/HomeActivity.kt
@@ -0,0 +1,234 @@
+package com.example.killergram_android_v1.feature.home
+
+import android.content.Intent
+import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.activity.enableEdgeToEdge
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.ViewModelProvider
+import androidx.recyclerview.widget.GridLayoutManager
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.example.killergram_android_v1.R
+import com.example.killergram_android_v1.databinding.ActivityHomeBinding
+import com.example.killergram_android_v1.feature.recyclerView.home.HomeAdapter
+import com.example.killergram_android_v1.feature.recyclerView.home.data.Sport
+import com.example.killergram_android_v1.feature.submitlist.SubmitBasketballActivity
+import java.time.DayOfWeek
+import java.time.LocalDate
+
+
+class HomeActivity : AppCompatActivity(), View.OnClickListener {
+ private val binding: ActivityHomeBinding by lazy {
+ ActivityHomeBinding.inflate(layoutInflater)
+ }
+ private val homeViewModel: HomeViewModel by lazy {
+ ViewModelProvider(this@HomeActivity)[HomeViewModel::class.java]
+ }
+
+ private var now = LocalDate.now()
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ enableEdgeToEdge()
+ setContentView(binding.root)
+
+ getDate()
+
+ raiseRecycleView()
+ observeTodaySportList()
+
+ binding.imgLeftArrow.setOnClickListener(this)
+ binding.imgRightArrow.setOnClickListener(this)
+ binding.constraintSportComponent.setOnClickListener(this)
+ }
+
+ private fun raiseRecycleView() {
+ val sportList: List = listOf(
+ Sport("축구", 16, 9, true)
+ )
+ homeViewModel.addSportList(sportList)
+ }
+
+ private fun observeTodaySportList() {
+ homeViewModel.todaySportList.observe(this@HomeActivity) {
+ val homeAdapter = HomeAdapter(it)
+ val layoutManager = GridLayoutManager(this, 1)
+ binding.recyclerSport.layoutManager = layoutManager
+ binding.recyclerSport.adapter = homeAdapter
+ }
+ }
+
+ override fun onClick(v: View?) {
+ val homeToSubmitBasketBall = Intent(this, SubmitBasketballActivity::class.java)
+ val dayList = listOf(
+ binding.tvDateFirst,
+ binding.tvDateSecond,
+ binding.tvDateThird,
+ binding.tvDateFourth,
+ binding.tvDateFifth,
+ )
+ when (v?.id) {
+ R.id.img_left_arrow -> {
+ now = now.minusWeeks(1)
+ setPreWeek(now).run {
+ Log.d("TEST", now.toString())
+ repeat(this.size) {
+ if (this[it] != 0) {
+ dayList[it].text = this[it].toString()
+ } else {
+ dayList[it].text = 31.toString()
+ }
+ }
+ }
+ }
+
+ R.id.img_right_arrow -> {
+ now = now.plusWeeks(1)
+ val days = setNextWeek(now)
+
+ repeat(days.size) {
+ if (days[it] != 0) {
+ dayList[it].text = days[it].toString()
+ } else {
+ dayList[it].text = 31.toString()
+ }
+ }
+ }
+ R.id.constraint_sport_component -> {
+ startActivity(homeToSubmitBasketBall)
+ }
+ }
+ }
+
+ private fun getDate() {
+ var now = LocalDate.now()
+ val weeks = DayOfWeek.entries.toList()
+
+ var days = mutableListOf()
+
+ when (now.dayOfWeek) {
+ in DayOfWeek.MONDAY..DayOfWeek.FRIDAY -> {
+ now = now.minusDays(weeks.indexOf(now.dayOfWeek).toLong())
+ }
+
+ DayOfWeek.SATURDAY -> {
+ now = now.plusDays(2)
+ }
+
+ DayOfWeek.SUNDAY -> {
+ now = now.plusDays(1)
+ }
+
+ else -> {}
+ }
+
+ repeat(5) {
+ now = now.plusDays(1)
+ days.add(now.dayOfMonth - 1)
+ }
+
+ val (day1, day2, day3, day4, day5) = days
+ val dateText1 = binding.tvDateFirst
+ val dateText2 = binding.tvDateSecond
+ val dateText3 = binding.tvDateThird
+ val dateText4 = binding.tvDateFourth
+ val dateText5 = binding.tvDateFifth
+
+ dateText1.text = day1.toString()
+ dateText2.text = day2.toString()
+ dateText3.text = day3.toString()
+ dateText4.text = day4.toString()
+ dateText5.text = day5.toString()
+
+ val today = LocalDate.now()
+
+ // 현재 날짜에 맞게 text 색 변경
+ if (today == now) { // todayDate의 요일을 구함 // 그 요일에 맞는 when에 들어가 text 색 변경
+ when (now.dayOfWeek) {
+ DayOfWeek.MONDAY -> {
+ dateText1.setTextColor(ContextCompat.getColor(baseContext, R.color.main))
+ }
+
+ DayOfWeek.TUESDAY -> {
+ dateText2.setTextColor(ContextCompat.getColor(baseContext, R.color.main))
+ }
+
+ DayOfWeek.WEDNESDAY -> {
+ dateText3.setTextColor(ContextCompat.getColor(baseContext, R.color.main))
+ }
+
+ DayOfWeek.THURSDAY -> {
+ dateText4.setTextColor(ContextCompat.getColor(baseContext, R.color.main))
+ }
+
+ DayOfWeek.FRIDAY -> {
+ dateText5.setTextColor(ContextCompat.getColor(baseContext, R.color.main))
+ }
+
+ else -> {}
+ }
+ }
+ }
+
+ fun setNextWeek(week: LocalDate): MutableList {
+ var now = week
+ val weeks = DayOfWeek.entries.toList()
+
+ val days = mutableListOf()
+
+ when (now.dayOfWeek) {
+ in DayOfWeek.MONDAY..DayOfWeek.FRIDAY -> {
+ now = now.minusDays(weeks.indexOf(now.dayOfWeek).toLong())
+ }
+
+ DayOfWeek.SATURDAY -> {
+ now = now.plusDays(2)
+ }
+
+ DayOfWeek.SUNDAY -> {
+ now = now.plusDays(1)
+ }
+
+ else -> {}
+ }
+
+ repeat(5) {
+ now = now.plusDays(1)
+ days.add(now.dayOfMonth - 1)
+ }
+
+ return days
+ }
+
+ fun setPreWeek(week: LocalDate): MutableList {
+ var now = week
+ val weeks = DayOfWeek.entries.toList()
+
+ val days = mutableListOf()
+
+ when (now.dayOfWeek) {
+ in DayOfWeek.MONDAY..DayOfWeek.FRIDAY -> {
+ now = now.minusDays(weeks.indexOf(now.dayOfWeek).toLong())
+ }
+
+ DayOfWeek.SATURDAY -> {
+ now = now.plusDays(2)
+ }
+
+ DayOfWeek.SUNDAY -> {
+ now = now.plusDays(1)
+ }
+
+ else -> {}
+ }
+
+ repeat(5) {
+ now = now.plusDays(1)
+ days.add(now.dayOfMonth - 1)
+ }
+
+ return days
+ }
+}
diff --git a/app/src/main/java/com/example/killergram_android_v1/feature/home/HomeViewModel.kt b/app/src/main/java/com/example/killergram_android_v1/feature/home/HomeViewModel.kt
new file mode 100644
index 0000000..5253bf0
--- /dev/null
+++ b/app/src/main/java/com/example/killergram_android_v1/feature/home/HomeViewModel.kt
@@ -0,0 +1,19 @@
+package com.example.killergram_android_v1.feature.home
+
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.ViewModel
+import com.example.killergram_android_v1.feature.recyclerView.home.data.Sport
+
+class HomeViewModel : ViewModel() {
+ // 오늘의 스포츠 컴포넌트
+ // 캘린더
+ // 운동 신청 컴포넌트 - text 변경
+
+ private val _todaySportList: MutableLiveData> = MutableLiveData()
+ val todaySportList: LiveData> = _todaySportList
+
+ fun addSportList(sport: List) { // 요일, 날짜
+ _todaySportList.value = sport // 서버연동 후 값 적용
+ }
+}
diff --git a/app/src/main/java/com/example/killergram_android_v1/feature/home/HomeViewModelFactory.kt b/app/src/main/java/com/example/killergram_android_v1/feature/home/HomeViewModelFactory.kt
new file mode 100644
index 0000000..1dcbc6e
--- /dev/null
+++ b/app/src/main/java/com/example/killergram_android_v1/feature/home/HomeViewModelFactory.kt
@@ -0,0 +1,13 @@
+package com.example.killergram_android_v1.feature.home
+
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.ViewModelProvider
+
+class HomeViewModelFactory : ViewModelProvider.Factory { // HomeViewModel 인스턴스 생성
+ override fun create(modelClass: Class): T {
+ if (modelClass.isAssignableFrom(HomeViewModel::class.java)) {
+ return HomeViewModel() as T
+ }
+ throw IllegalArgumentException("Unknown ViewModel Class")
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/killergram_android_v1/feature/login/LoginActivity.kt b/app/src/main/java/com/example/killergram_android_v1/feature/login/LoginActivity.kt
index c2b27a9..e6ec681 100644
--- a/app/src/main/java/com/example/killergram_android_v1/feature/login/LoginActivity.kt
+++ b/app/src/main/java/com/example/killergram_android_v1/feature/login/LoginActivity.kt
@@ -114,8 +114,6 @@ open class LoginActivity : AppCompatActivity(), View.OnClickListener {
})
}
-
-
private fun flagCheck(): Boolean {
return emailFlag && passwordFlag
}
diff --git a/app/src/main/java/com/example/killergram_android_v1/feature/recyclerView/dum.java b/app/src/main/java/com/example/killergram_android_v1/feature/recyclerView/dum.java
new file mode 100644
index 0000000..b00bb50
--- /dev/null
+++ b/app/src/main/java/com/example/killergram_android_v1/feature/recyclerView/dum.java
@@ -0,0 +1,4 @@
+package com.example.killergram_android_v1.feature.recyclerView;
+
+public class dum {
+}
diff --git a/app/src/main/java/com/example/killergram_android_v1/feature/recyclerView/home/HomeAdapter.kt b/app/src/main/java/com/example/killergram_android_v1/feature/recyclerView/home/HomeAdapter.kt
new file mode 100644
index 0000000..652a4d9
--- /dev/null
+++ b/app/src/main/java/com/example/killergram_android_v1/feature/recyclerView/home/HomeAdapter.kt
@@ -0,0 +1,43 @@
+package com.example.killergram_android_v1.feature.recyclerView.home
+
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import com.example.killergram_android_v1.R
+import com.example.killergram_android_v1.databinding.ListItemBinding
+import com.example.killergram_android_v1.feature.recyclerView.home.data.Sport
+
+class
+HomeAdapter(
+ private val items: List
+) : RecyclerView.Adapter() {
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder {
+ return Holder(ListItemBinding.inflate(LayoutInflater.from(parent.context)))
+ }
+
+ override fun getItemCount(): Int {
+ return items.size
+ }
+
+ override fun onBindViewHolder(holder: Holder, position: Int) {
+ holder.bind(items[position])
+ }
+
+ class Holder(private val binding: ListItemBinding) : RecyclerView.ViewHolder(binding.root) {
+ fun bind(sport: Sport) {
+ binding.title.text = sport.sportName
+ binding.subTitle.text = "${sport.personnel}명 중 ${sport.participate}명 참여"
+ if (sport.isEnd) {
+ binding.tvItemComplete.text = "완료"
+ binding.constraintSport.setBackgroundResource(R.drawable.bg_button_gray_radius_8)
+ binding.subTitle.resources.getColor(R.color.main)
+ } else {
+ binding.tvItemComplete.text = "진행 중"
+ binding.subTitle.resources.getColor(R.color.white)
+ binding.constraintSport.setBackgroundResource(R.drawable.bg_button_main_radius_8)
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/killergram_android_v1/feature/recyclerView/home/data/Sport.kt b/app/src/main/java/com/example/killergram_android_v1/feature/recyclerView/home/data/Sport.kt
new file mode 100644
index 0000000..51f084d
--- /dev/null
+++ b/app/src/main/java/com/example/killergram_android_v1/feature/recyclerView/home/data/Sport.kt
@@ -0,0 +1,8 @@
+package com.example.killergram_android_v1.feature.recyclerView.home.data
+
+data class Sport(
+ val sportName: String,
+ val personnel: Int,
+ val participate: Int,
+ val isEnd: Boolean,
+)
diff --git a/app/src/main/java/com/example/killergram_android_v1/feature/signup/EmailValidationActivity.kt b/app/src/main/java/com/example/killergram_android_v1/feature/signup/EmailValidationActivity.kt
index 4b6144c..7cadd01 100644
--- a/app/src/main/java/com/example/killergram_android_v1/feature/signup/EmailValidationActivity.kt
+++ b/app/src/main/java/com/example/killergram_android_v1/feature/signup/EmailValidationActivity.kt
@@ -2,23 +2,21 @@ package com.example.killergram_android_v1.feature.signup
import android.content.Intent
import android.os.Bundle
-import android.text.Editable
-import android.text.TextWatcher
import android.view.View
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import com.example.killergram_android_v1.R
-import com.example.killergram_android_v1.databinding.ActivityEmailVerificationBinding
+import com.example.killergram_android_v1.databinding.ActivityEmailValidationBinding
class EmailValidationActivity : AppCompatActivity(), View.OnClickListener {
private val binding by lazy {
- ActivityEmailVerificationBinding.inflate(layoutInflater)
+ ActivityEmailValidationBinding.inflate(layoutInflater)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
- setContentView(R.layout.activity_email_verification)
+ setContentView(binding.root)
binding.btnLogin.setOnClickListener(this)
binding.imgLeftArrow.setOnClickListener(this)
@@ -30,10 +28,10 @@ class EmailValidationActivity : AppCompatActivity(), View.OnClickListener {
when(view?.id) {
R.id.btn_login -> {
- startActivity(emailValidationToInputEmail)
+ startActivity(emailValidationToSetPassword)
}
R.id.img_left_arrow -> {
- startActivity(emailValidationToSetPassword)
+ startActivity(emailValidationToInputEmail)
}
}
}
diff --git a/app/src/main/java/com/example/killergram_android_v1/feature/signup/InputEmailActivity.kt b/app/src/main/java/com/example/killergram_android_v1/feature/signup/InputEmailActivity.kt
index e7317b2..13973f0 100644
--- a/app/src/main/java/com/example/killergram_android_v1/feature/signup/InputEmailActivity.kt
+++ b/app/src/main/java/com/example/killergram_android_v1/feature/signup/InputEmailActivity.kt
@@ -21,7 +21,7 @@ class InputEmailActivity : AppCompatActivity(), View.OnClickListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
- setContentView(R.layout.activity_input_email)
+ setContentView(binding.root)
onEmailListener()
diff --git a/app/src/main/java/com/example/killergram_android_v1/feature/signup/SetPasswordActivity.kt b/app/src/main/java/com/example/killergram_android_v1/feature/signup/SetPasswordActivity.kt
index ed94698..0ad64aa 100644
--- a/app/src/main/java/com/example/killergram_android_v1/feature/signup/SetPasswordActivity.kt
+++ b/app/src/main/java/com/example/killergram_android_v1/feature/signup/SetPasswordActivity.kt
@@ -22,7 +22,7 @@ class SetPasswordActivity : AppCompatActivity(), View.OnClickListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
- setContentView(R.layout.activity_set_password)
+ setContentView(binding.root)
binding.btnLogin.setOnClickListener(this)
binding.imgLeftArrow.setOnClickListener(this)
diff --git a/app/src/main/java/com/example/killergram_android_v1/feature/submitlist/SubmitBasketballActivity.kt b/app/src/main/java/com/example/killergram_android_v1/feature/submitlist/SubmitBasketballActivity.kt
new file mode 100644
index 0000000..a978f52
--- /dev/null
+++ b/app/src/main/java/com/example/killergram_android_v1/feature/submitlist/SubmitBasketballActivity.kt
@@ -0,0 +1,19 @@
+package com.example.killergram_android_v1.feature.submitlist
+
+import android.os.Bundle
+import androidx.activity.enableEdgeToEdge
+import androidx.appcompat.app.AppCompatActivity
+import com.example.killergram_android_v1.databinding.ActivitySubmitBasketballBinding
+
+class SubmitBasketballActivity : AppCompatActivity() {
+ private val binding by lazy {
+ ActivitySubmitBasketballBinding.inflate(layoutInflater)
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ enableEdgeToEdge()
+ setContentView(binding.root)
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/killergram_android_v1/feature/utils/EmailVaildator.kt b/app/src/main/java/com/example/killergram_android_v1/feature/utils/EmailVaildator.kt
deleted file mode 100644
index 7df93b5..0000000
--- a/app/src/main/java/com/example/killergram_android_v1/feature/utils/EmailVaildator.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.example.killergram_android_v1.feature.utils
-
-
-fun isRegexEmail(email: String): Boolean {
- return email.matches("^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$".toRegex())
-}
-
-fun isRegexPassword(password: String): Boolean {
- // 8~16글자, 대문자 1개, 소문자 1개, 숫자 1개
- return password.matches("^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@\$!%*#?&])[A-Za-z\\d@\$!%*#?&]{8,16}$".toRegex())
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/killergram_android_v1/feature/utils/utils.kt b/app/src/main/java/com/example/killergram_android_v1/feature/utils/utils.kt
new file mode 100644
index 0000000..f92fc7e
--- /dev/null
+++ b/app/src/main/java/com/example/killergram_android_v1/feature/utils/utils.kt
@@ -0,0 +1,46 @@
+package com.example.killergram_android_v1.feature.utils
+
+import android.icu.util.Calendar
+import java.time.DayOfWeek
+import java.time.LocalDate
+
+
+fun isRegexEmail(email: String): Boolean {
+ return email.matches("^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$".toRegex())
+}
+
+fun isRegexPassword(password: String): Boolean {
+ // 8~16글자, 대문자 1개, 소문자 1개, 숫자 1개
+ return password.matches("^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@\$!%*#?&])[A-Za-z\\d@\$!%*#?&]{8,16}$".toRegex())
+}
+
+fun initialThisWeek(): MutableList {
+ var now = LocalDate.now()
+ val weeks = DayOfWeek.entries.toList()
+
+ val days = mutableListOf()
+
+ when (now.dayOfWeek) {
+ in DayOfWeek.MONDAY..DayOfWeek.FRIDAY -> {
+ now = now.minusDays(weeks.indexOf(now.dayOfWeek).toLong())
+ }
+
+ DayOfWeek.SATURDAY -> {
+ now = now.plusDays(2)
+ }
+
+ DayOfWeek.SUNDAY -> {
+ now = now.plusDays(1)
+ }
+
+ else -> {}
+ }
+
+ repeat(5) {
+ now = now.plusDays(1)
+ days.add(now.dayOfMonth - 1)
+ }
+
+ return days
+}
+
diff --git a/app/src/main/res/drawable/bg_button_gray_radius_8.xml b/app/src/main/res/drawable/bg_button_gray_radius_8.xml
index 70bf4e0..39aef96 100644
--- a/app/src/main/res/drawable/bg_button_gray_radius_8.xml
+++ b/app/src/main/res/drawable/bg_button_gray_radius_8.xml
@@ -2,7 +2,7 @@
-
-
+
diff --git a/app/src/main/res/drawable/button_selected.xml b/app/src/main/res/drawable/button_selected.xml
index 05e65bb..89fba21 100644
--- a/app/src/main/res/drawable/button_selected.xml
+++ b/app/src/main/res/drawable/button_selected.xml
@@ -1,14 +1,12 @@
-
-
+
-
-
+
-
-
\ No newline at end of file
diff --git a/app/src/main/res/drawable/chevron_left.xml b/app/src/main/res/drawable/chevron_left.xml
new file mode 100644
index 0000000..cec1941
--- /dev/null
+++ b/app/src/main/res/drawable/chevron_left.xml
@@ -0,0 +1,13 @@
+
+
+
diff --git a/app/src/main/res/drawable/chevron_left_gray500.xml b/app/src/main/res/drawable/chevron_left_gray500.xml
new file mode 100644
index 0000000..cec1941
--- /dev/null
+++ b/app/src/main/res/drawable/chevron_left_gray500.xml
@@ -0,0 +1,13 @@
+
+
+
diff --git a/app/src/main/res/drawable/chevron_right.xml b/app/src/main/res/drawable/chevron_right.xml
index cec1941..11d4cbf 100644
--- a/app/src/main/res/drawable/chevron_right.xml
+++ b/app/src/main/res/drawable/chevron_right.xml
@@ -4,7 +4,7 @@
android:viewportWidth="24"
android:viewportHeight="24">
+
+
diff --git a/app/src/main/res/drawable/chevron_right_gray900.xml b/app/src/main/res/drawable/chevron_right_gray900.xml
new file mode 100644
index 0000000..5574a8f
--- /dev/null
+++ b/app/src/main/res/drawable/chevron_right_gray900.xml
@@ -0,0 +1,13 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_baseball.png b/app/src/main/res/drawable/ic_baseball.png
new file mode 100644
index 0000000..33fdbeb
Binary files /dev/null and b/app/src/main/res/drawable/ic_baseball.png differ
diff --git a/app/src/main/res/drawable/ic_fitness.png b/app/src/main/res/drawable/ic_fitness.png
new file mode 100644
index 0000000..a33b797
Binary files /dev/null and b/app/src/main/res/drawable/ic_fitness.png differ
diff --git a/app/src/main/res/drawable/ic_person.xml b/app/src/main/res/drawable/ic_person.xml
new file mode 100644
index 0000000..91a8a77
--- /dev/null
+++ b/app/src/main/res/drawable/ic_person.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_setting.xml b/app/src/main/res/drawable/ic_setting.xml
new file mode 100644
index 0000000..44523f9
--- /dev/null
+++ b/app/src/main/res/drawable/ic_setting.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_soccer.png b/app/src/main/res/drawable/ic_soccer.png
new file mode 100644
index 0000000..e3304cd
Binary files /dev/null and b/app/src/main/res/drawable/ic_soccer.png differ
diff --git a/app/src/main/res/drawable/ic_table_tennis.png b/app/src/main/res/drawable/ic_table_tennis.png
new file mode 100644
index 0000000..e2a3c1f
Binary files /dev/null and b/app/src/main/res/drawable/ic_table_tennis.png differ
diff --git a/app/src/main/res/drawable/icon_radius.xml b/app/src/main/res/drawable/icon_radius.xml
new file mode 100644
index 0000000..5c332ff
--- /dev/null
+++ b/app/src/main/res/drawable/icon_radius.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/today_badminton_component.png b/app/src/main/res/drawable/today_badminton_component.png
new file mode 100644
index 0000000..9497883
Binary files /dev/null and b/app/src/main/res/drawable/today_badminton_component.png differ
diff --git a/app/src/main/res/drawable/today_base_component.png b/app/src/main/res/drawable/today_base_component.png
new file mode 100644
index 0000000..8b2544c
Binary files /dev/null and b/app/src/main/res/drawable/today_base_component.png differ
diff --git a/app/src/main/res/drawable/today_basketball_component.png b/app/src/main/res/drawable/today_basketball_component.png
new file mode 100644
index 0000000..7199c20
Binary files /dev/null and b/app/src/main/res/drawable/today_basketball_component.png differ
diff --git a/app/src/main/res/drawable/today_volleyball_component.png b/app/src/main/res/drawable/today_volleyball_component.png
new file mode 100644
index 0000000..0101b84
Binary files /dev/null and b/app/src/main/res/drawable/today_volleyball_component.png differ
diff --git a/app/src/main/res/drawable/today_yeosu_component.png b/app/src/main/res/drawable/today_yeosu_component.png
new file mode 100644
index 0000000..27b254f
Binary files /dev/null and b/app/src/main/res/drawable/today_yeosu_component.png differ
diff --git a/app/src/main/res/layout/activity_email_verification.xml b/app/src/main/res/layout/activity_email_validation.xml
similarity index 77%
rename from app/src/main/res/layout/activity_email_verification.xml
rename to app/src/main/res/layout/activity_email_validation.xml
index 95bcb6c..f401037 100644
--- a/app/src/main/res/layout/activity_email_verification.xml
+++ b/app/src/main/res/layout/activity_email_validation.xml
@@ -1,6 +1,7 @@
-
+ app:layout_constraintGuide_percent="0.025" />
+
+
+ android:src="@drawable/chevron_left"
+ app:layout_constraintStart_toStartOf="@id/gl_start"
+ app:layout_constraintTop_toTopOf="@id/gl_top" />
+ app:layout_constraintEnd_toEndOf="@id/gl_end"
+ app:layout_constraintStart_toStartOf="@id/gl_start"
+ app:layout_constraintTop_toBottomOf="@id/img_left_arrow">
+ app:layout_constraintBottom_toBottomOf="@id/gl_bottom"
+ app:layout_constraintEnd_toEndOf="@id/gl_end"
+ app:layout_constraintStart_toStartOf="@id/gl_start" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_enter_gender.xml b/app/src/main/res/layout/activity_enter_gender.xml
index 2496216..fb70d3b 100644
--- a/app/src/main/res/layout/activity_enter_gender.xml
+++ b/app/src/main/res/layout/activity_enter_gender.xml
@@ -9,34 +9,41 @@
tools:context=".feature.signup.EmailVerificationFragment">
+ app:layout_constraintGuide_percent="0.025" />
+
+
+ app:layout_constraintStart_toStartOf="@id/gl_start"
+ app:layout_constraintEnd_toEndOf="@id/gl_end"
+ app:layout_constraintTop_toTopOf="@id/gl_top" />
+ app:layout_constraintStart_toStartOf="@id/gl_start"
+ app:layout_constraintEnd_toEndOf="@id/gl_end">
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_enter_grade.xml b/app/src/main/res/layout/activity_enter_grade.xml
index 52d2c5f..5b2d5fc 100644
--- a/app/src/main/res/layout/activity_enter_grade.xml
+++ b/app/src/main/res/layout/activity_enter_grade.xml
@@ -10,34 +10,41 @@
tools:context=".feature.signup.EmailVerificationFragment">
+ app:layout_constraintGuide_percent="0.025" />
+
+
+ app:layout_constraintStart_toStartOf="@id/gl_start"
+ app:layout_constraintEnd_toEndOf="@id/gl_end"
+ app:layout_constraintTop_toTopOf="@id/gl_top" />
+ app:layout_constraintStart_toStartOf="@id/gl_start"
+ app:layout_constraintEnd_toEndOf="@id/gl_end">
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_enter_name.xml b/app/src/main/res/layout/activity_enter_name.xml
index 018f7eb..0d706fa 100644
--- a/app/src/main/res/layout/activity_enter_name.xml
+++ b/app/src/main/res/layout/activity_enter_name.xml
@@ -10,34 +10,41 @@
tools:context=".feature.signup.EmailVerificationFragment">
+ app:layout_constraintGuide_percent="0.025" />
+
+
+ app:layout_constraintStart_toStartOf="@id/gl_start"
+ app:layout_constraintEnd_toEndOf="@id/gl_end"
+ app:layout_constraintTop_toTopOf="@id/gl_top" />
+ app:layout_constraintStart_toStartOf="@id/gl_start"
+ app:layout_constraintEnd_toEndOf="@id/gl_end">
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_enter_skills.xml b/app/src/main/res/layout/activity_enter_skills.xml
index 7709533..44750ac 100644
--- a/app/src/main/res/layout/activity_enter_skills.xml
+++ b/app/src/main/res/layout/activity_enter_skills.xml
@@ -9,34 +9,41 @@
tools:context=".feature.signup.EmailVerificationFragment">
+ app:layout_constraintGuide_percent="0.025" />
+
+
+ app:layout_constraintStart_toStartOf="@id/gl_start"
+ app:layout_constraintEnd_toEndOf="@id/gl_end"
+ app:layout_constraintTop_toTopOf="@id/gl_top" />
@@ -94,9 +101,10 @@
@@ -130,10 +138,10 @@
@@ -167,10 +175,10 @@
@@ -206,12 +214,11 @@
style="@style/InputButton"
android:text="다음"
android:layout_marginHorizontal="24dp"
- android:layout_marginBottom="48dp"
android:layout_weight="1"
android:onClick="onClick"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintStart_toStartOf="@id/glStart"
- app:layout_constraintEnd_toEndOf="@id/glEnd"
+ app:layout_constraintBottom_toBottomOf="@id/gl_bottom"
+ app:layout_constraintStart_toStartOf="@id/gl_start"
+ app:layout_constraintEnd_toEndOf="@id/gl_end"
/>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml
new file mode 100644
index 0000000..a74c739
--- /dev/null
+++ b/app/src/main/res/layout/activity_home.xml
@@ -0,0 +1,390 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_input_email.xml b/app/src/main/res/layout/activity_input_email.xml
index 90808b4..a0a93f0 100644
--- a/app/src/main/res/layout/activity_input_email.xml
+++ b/app/src/main/res/layout/activity_input_email.xml
@@ -9,34 +9,41 @@
tools:context=".feature.signup.EmailVerificationFragment">
+ app:layout_constraintGuide_percent="0.025" />
+
+
+ app:layout_constraintStart_toStartOf="@id/gl_top"
+ app:layout_constraintEnd_toEndOf="@id/gl_top">
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index e85e8d0..e799553 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -9,21 +9,21 @@
tools:context=".LoginFragment">
+ app:layout_constraintEnd_toEndOf="@id/gl_end"
+ app:layout_constraintStart_toStartOf="@id/gl_start"
+ app:layout_constraintTop_toTopOf="@id/gl_top" />
+ app:layout_constraintGuide_percent="0.025" />
+
+
+ app:layout_constraintStart_toStartOf="@id/gl_start"
+ app:layout_constraintEnd_toEndOf="@id/gl_end">
@@ -122,8 +129,8 @@
android:textColorHint="@color/gray800"
app:counterEnabled="true"
app:counterMaxLength="16"
- app:layout_constraintEnd_toEndOf="@id/glEnd"
- app:layout_constraintStart_toStartOf="@+id/glStart"
+ app:layout_constraintEnd_toEndOf="@id/gl_end"
+ app:layout_constraintStart_toStartOf="@+id/gl_start"
app:layout_constraintTop_toBottomOf="@id/tv_check_password">
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_submit_basketball.xml b/app/src/main/res/layout/activity_submit_basketball.xml
new file mode 100644
index 0000000..8e83fe3
--- /dev/null
+++ b/app/src/main/res/layout/activity_submit_basketball.xml
@@ -0,0 +1,218 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/layout_card.xml b/app/src/main/res/layout/layout_card.xml
new file mode 100644
index 0000000..8e905d5
--- /dev/null
+++ b/app/src/main/res/layout/layout_card.xml
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/list_item.xml b/app/src/main/res/layout/list_item.xml
new file mode 100644
index 0000000..a992929
--- /dev/null
+++ b/app/src/main/res/layout/list_item.xml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 5bd4233..b9b8362 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -7,6 +7,5 @@
Second Fragment
Next
Previous
-
-
+ %1$d명 중 %2$d명 참여
\ 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 10a885c..4f0abb9 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -58,6 +58,7 @@
- 24sp
- @color/white
- @font/pretendard
+ - bold
- 7.2sp
@@ -88,4 +89,32 @@
- @font/pretendard
- 7dp
+
+
+
+
+
+
+
+
\ No newline at end of file