From b7b10c3b2b4397964fbe197a9af26f05ab56e72f Mon Sep 17 00:00:00 2001 From: dkyuuum Date: Thu, 11 Jan 2024 18:02:04 +0900 Subject: [PATCH 1/5] =?UTF-8?q?Design:=20=EB=B0=94=ED=85=80=20=EB=82=B4?= =?UTF-8?q?=EB=B9=84=EB=B0=94=20=ED=9A=8C=EC=83=89=20ripple=20=EC=95=88=20?= =?UTF-8?q?=EB=9C=A8=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/activity_main.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index b8749beb..2b81dd68 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -16,7 +16,7 @@ android:paddingBottom="10dp" app:itemIconTint="@color/selector_selected_skyblue_else_gray" app:itemPaddingBottom="5dp" - app:itemRippleColor="@android:color/transparent" + app:itemRippleColor="@null" app:itemTextAppearanceActive="@style/MediumFont.12" app:itemTextColor="@color/selector_selected_skyblue_else_gray" app:labelVisibilityMode="labeled" From 19e5b97c5911cde93ca88369230e9cb057af1311 Mon Sep 17 00:00:00 2001 From: dkyuuum Date: Fri, 12 Jan 2024 10:53:42 +0900 Subject: [PATCH 2/5] =?UTF-8?q?Design:=20=EC=A1=B8=EC=97=85=EC=9A=94?= =?UTF-8?q?=EA=B1=B4=20tab=20minHeight=20=EC=84=A4=EC=A0=95=20#21?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/fragment_grad_info.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/res/layout/fragment_grad_info.xml b/app/src/main/res/layout/fragment_grad_info.xml index 60f6a816..a83803b7 100644 --- a/app/src/main/res/layout/fragment_grad_info.xml +++ b/app/src/main/res/layout/fragment_grad_info.xml @@ -24,6 +24,7 @@ android:layout_marginStart="16dp" android:layout_marginTop="38dp" android:layout_marginEnd="16dp" + android:minHeight="0dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/tv_grad_info_title" From 4bea7b867137c2d1b027008a5064d2403a18ce93 Mon Sep 17 00:00:00 2001 From: dkyuuum Date: Fri, 12 Jan 2024 11:50:24 +0900 Subject: [PATCH 3/5] =?UTF-8?q?Design:=20=EC=84=B1=EC=A0=81=EC=82=AC?= =?UTF-8?q?=ED=95=AD=20spinner=20ui=20=EC=B6=94=EA=B0=80=20#21?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bg_spinner_solid_blue_radius_16_5.xml | 17 +++++++ .../drawable/bg_stroke_blue_radius_16_5.xml | 5 ++ .../res/drawable/bg_stroke_top_gray_1.xml | 13 ++++++ app/src/main/res/drawable/ic_down_14.xml | 4 ++ .../main/res/layout/fragment_grad_info.xml | 13 ++++++ app/src/main/res/layout/fragment_grade.xml | 46 +++++++++++++++++++ 6 files changed, 98 insertions(+) create mode 100644 app/src/main/res/drawable/bg_spinner_solid_blue_radius_16_5.xml create mode 100644 app/src/main/res/drawable/bg_stroke_blue_radius_16_5.xml create mode 100644 app/src/main/res/drawable/bg_stroke_top_gray_1.xml create mode 100644 app/src/main/res/drawable/ic_down_14.xml diff --git a/app/src/main/res/drawable/bg_spinner_solid_blue_radius_16_5.xml b/app/src/main/res/drawable/bg_spinner_solid_blue_radius_16_5.xml new file mode 100644 index 00000000..660d3d86 --- /dev/null +++ b/app/src/main/res/drawable/bg_spinner_solid_blue_radius_16_5.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_stroke_blue_radius_16_5.xml b/app/src/main/res/drawable/bg_stroke_blue_radius_16_5.xml new file mode 100644 index 00000000..6cec5aa6 --- /dev/null +++ b/app/src/main/res/drawable/bg_stroke_blue_radius_16_5.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_stroke_top_gray_1.xml b/app/src/main/res/drawable/bg_stroke_top_gray_1.xml new file mode 100644 index 00000000..59f4b0de --- /dev/null +++ b/app/src/main/res/drawable/bg_stroke_top_gray_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_down_14.xml b/app/src/main/res/drawable/ic_down_14.xml new file mode 100644 index 00000000..b3a6554e --- /dev/null +++ b/app/src/main/res/drawable/ic_down_14.xml @@ -0,0 +1,4 @@ + + + diff --git a/app/src/main/res/layout/fragment_grad_info.xml b/app/src/main/res/layout/fragment_grad_info.xml index a83803b7..10d531d2 100644 --- a/app/src/main/res/layout/fragment_grad_info.xml +++ b/app/src/main/res/layout/fragment_grad_info.xml @@ -19,6 +19,7 @@ + + + + + + + + \ No newline at end of file From 047f2c3b949eaad55a5cb92d0360a0de8b56feb5 Mon Sep 17 00:00:00 2001 From: dkyuuum Date: Fri, 12 Jan 2024 14:09:39 +0900 Subject: [PATCH 4/5] =?UTF-8?q?Design:=20=EC=84=B1=EC=A0=81=EC=82=AC?= =?UTF-8?q?=ED=95=AD=20spinner=20ui=20=EC=88=98=EC=A0=95=20#21?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/model/gradInfo/ScheduleSpinner.kt | 5 ++ .../project/ui/gradInfo/GradeFragment.kt | 41 +++++++++++---- .../ui/gradInfo/adapter/SpinnerAdapter.kt | 51 +++++++++++++++++++ .../bg_spinner_solid_blue_radius_16_5.xml | 6 ++- app/src/main/res/layout/fragment_grade.xml | 6 +-- .../item_spinner_grad_info_schedule.xml | 23 +++++++++ app/src/main/res/values/strings.xml | 13 ++++- 7 files changed, 129 insertions(+), 16 deletions(-) create mode 100644 app/src/main/java/umc/com/mobile/project/data/model/gradInfo/ScheduleSpinner.kt create mode 100644 app/src/main/java/umc/com/mobile/project/ui/gradInfo/adapter/SpinnerAdapter.kt create mode 100644 app/src/main/res/layout/item_spinner_grad_info_schedule.xml diff --git a/app/src/main/java/umc/com/mobile/project/data/model/gradInfo/ScheduleSpinner.kt b/app/src/main/java/umc/com/mobile/project/data/model/gradInfo/ScheduleSpinner.kt new file mode 100644 index 00000000..ac3a717b --- /dev/null +++ b/app/src/main/java/umc/com/mobile/project/data/model/gradInfo/ScheduleSpinner.kt @@ -0,0 +1,5 @@ +package umc.com.mobile.project.data.model.gradInfo + +data class ScheduleSpinner( + val name: String, +) \ No newline at end of file diff --git a/app/src/main/java/umc/com/mobile/project/ui/gradInfo/GradeFragment.kt b/app/src/main/java/umc/com/mobile/project/ui/gradInfo/GradeFragment.kt index 5136b51f..48ff1ba3 100644 --- a/app/src/main/java/umc/com/mobile/project/ui/gradInfo/GradeFragment.kt +++ b/app/src/main/java/umc/com/mobile/project/ui/gradInfo/GradeFragment.kt @@ -1,19 +1,17 @@ package umc.com.mobile.project.ui.gradInfo +import android.R import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.AdapterView +import android.widget.ArrayAdapter +import android.widget.SpinnerAdapter +import android.widget.Toast import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels -import androidx.viewpager2.widget.ViewPager2 -import com.google.android.material.tabs.TabLayout -import com.google.android.material.tabs.TabLayoutMediator -import umc.com.mobile.project.databinding.FragmentCareerBinding -import umc.com.mobile.project.databinding.FragmentGradInfoBinding import umc.com.mobile.project.databinding.FragmentGradeBinding -import umc.com.mobile.project.ui.career.CareerViewModel -import umc.com.mobile.project.ui.gradInfo.adapter.GradInfoVPAdapter class GradeFragment : Fragment() { private var _binding: FragmentGradeBinding? = null @@ -27,9 +25,8 @@ class GradeFragment : Fragment() { ): View { _binding = FragmentGradeBinding.inflate(inflater, container, false) - viewModel.text.observe(viewLifecycleOwner) { -// binding.text.text = it - } + initSpinnerSchedule() // spinner 설정 + return binding.root } @@ -37,4 +34,28 @@ class GradeFragment : Fragment() { super.onDestroyView() _binding = null } + + private fun initSpinnerSchedule() { + binding.spinnerSchedule.onItemSelectedListener = + object : AdapterView.OnItemSelectedListener { + override fun onItemSelected( + parent: AdapterView<*>?, + view: View?, + position: Int, + id: Long + ) { + if (!binding.spinnerSchedule.getItemAtPosition(position).equals("시간표 불러오기")) { + Toast.makeText( + context, + "Selected: ${binding.spinnerSchedule.getItemAtPosition(position)}", + Toast.LENGTH_LONG + ) + } + } + + override fun onNothingSelected(p0: AdapterView<*>?) { + + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/umc/com/mobile/project/ui/gradInfo/adapter/SpinnerAdapter.kt b/app/src/main/java/umc/com/mobile/project/ui/gradInfo/adapter/SpinnerAdapter.kt new file mode 100644 index 00000000..ec7aec13 --- /dev/null +++ b/app/src/main/java/umc/com/mobile/project/ui/gradInfo/adapter/SpinnerAdapter.kt @@ -0,0 +1,51 @@ +package umc.com.mobile.project.ui.gradInfo.adapter + +import android.annotation.SuppressLint +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ArrayAdapter +import androidx.annotation.LayoutRes +import androidx.core.content.ContextCompat +import umc.com.mobile.project.R +import umc.com.mobile.project.data.model.gradInfo.ScheduleSpinner +import umc.com.mobile.project.databinding.ItemSpinnerGradInfoScheduleBinding + +class SpinnerAdapter( + context: Context, + @LayoutRes private val resId: Int, + private val values: MutableList +) : ArrayAdapter(context, resId, values) { + + override fun getCount() = values.size + + + override fun getItem(position: Int) = values[position] + + @SuppressLint("ViewHolder") + override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { + val binding = ItemSpinnerGradInfoScheduleBinding.inflate(LayoutInflater.from(parent.context), parent, false) + val model = values[position] + try { + binding.tvSchedule.text = model.name + binding.tvSchedule.setTextColor(ContextCompat.getColor(context, R.color.white)) + } catch (e: Exception) { + e.printStackTrace() + } + return binding.root + } + + override fun getDropDownView(position: Int, convertView: View?, parent: ViewGroup): View { + val binding = ItemSpinnerGradInfoScheduleBinding.inflate(LayoutInflater.from(parent.context), parent, false) + val model = values[position] + try { + binding.tvSchedule.text = model.name + + } catch (e: Exception) { + e.printStackTrace() + } + return binding.root + } + +} \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_spinner_solid_blue_radius_16_5.xml b/app/src/main/res/drawable/bg_spinner_solid_blue_radius_16_5.xml index 660d3d86..3a81d1e2 100644 --- a/app/src/main/res/drawable/bg_spinner_solid_blue_radius_16_5.xml +++ b/app/src/main/res/drawable/bg_spinner_solid_blue_radius_16_5.xml @@ -6,12 +6,14 @@ - + + android:gravity="center|end" + android:height="10dp" + android:width="14dp"/> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_grade.xml b/app/src/main/res/layout/fragment_grade.xml index 57780306..5dec9761 100644 --- a/app/src/main/res/layout/fragment_grade.xml +++ b/app/src/main/res/layout/fragment_grade.xml @@ -30,11 +30,11 @@ android:paddingBottom="10dp" android:text="직접 작성하기" android:textColor="@color/skyBlue" - app:layout_constraintEnd_toStartOf="@+id/appCompatSpinner" + app:layout_constraintEnd_toStartOf="@+id/spinner_schedule" app:layout_constraintTop_toTopOf="parent" /> + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a4d69bfc..0419e56c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -27,14 +27,17 @@ 자격증 공모전 봉사활동 - + + + 졸업까지 내 전공의 졸업요건 \n한눈에 알아보기 더보기 나만의 \n다음 계획 + 로그인 ID/PW는 학교 서버에 접속할 때만 사용합니다. \n어떠한 데이터도 수집하지 않습니다. 비밀번호 (PW) @@ -42,4 +45,12 @@ 종합정보시스템의 ID/PW를 입력하세요. HANSUNG UNIV + + + 시간표 불러오기 + 1학년 1학기 + 1학년 2학기 + 2학년 1학기 + + \ No newline at end of file From 8ce6a12e989555b887a0b56b6c78b4b0a93a6802 Mon Sep 17 00:00:00 2001 From: dkyuuum Date: Fri, 12 Jan 2024 15:09:29 +0900 Subject: [PATCH 5/5] =?UTF-8?q?Feat:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20id,?= =?UTF-8?q?=20pw=20=EC=9E=85=EB=A0=A5=EC=8B=9C=20=EB=B2=84=ED=8A=BC=20?= =?UTF-8?q?=ED=99=9C=EC=84=B1=ED=99=94=20#1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 2 + .../project/data/model/login/LoginResponse.kt | 6 + .../mobile/project/ui/login/LoginActivity.kt | 6 + .../ui/login/viewmodel/LoginViewModel.kt | 28 +++ .../res/drawable/bg_solid_blue_radius_25.xml | 5 + app/src/main/res/layout/activity_login.xml | 173 ++++++++++-------- 6 files changed, 140 insertions(+), 80 deletions(-) create mode 100644 app/src/main/java/umc/com/mobile/project/data/model/login/LoginResponse.kt create mode 100644 app/src/main/java/umc/com/mobile/project/ui/login/viewmodel/LoginViewModel.kt create mode 100644 app/src/main/res/drawable/bg_solid_blue_radius_25.xml diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 4fa56e57..29c2ca63 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,6 +1,7 @@ plugins { id("com.android.application") id("org.jetbrains.kotlin.android") + id("kotlin-kapt") } android { @@ -35,6 +36,7 @@ android { } buildFeatures { viewBinding = true + dataBinding = true } } diff --git a/app/src/main/java/umc/com/mobile/project/data/model/login/LoginResponse.kt b/app/src/main/java/umc/com/mobile/project/data/model/login/LoginResponse.kt new file mode 100644 index 00000000..8c4f71b6 --- /dev/null +++ b/app/src/main/java/umc/com/mobile/project/data/model/login/LoginResponse.kt @@ -0,0 +1,6 @@ +package umc.com.mobile.project.data.model.login + +data class LoginResponse ( + val id: String, + val pw: String +) \ No newline at end of file diff --git a/app/src/main/java/umc/com/mobile/project/ui/login/LoginActivity.kt b/app/src/main/java/umc/com/mobile/project/ui/login/LoginActivity.kt index 502d6d40..bd32fb65 100644 --- a/app/src/main/java/umc/com/mobile/project/ui/login/LoginActivity.kt +++ b/app/src/main/java/umc/com/mobile/project/ui/login/LoginActivity.kt @@ -2,12 +2,15 @@ package umc.com.mobile.project.ui.login import android.content.Intent import android.os.Bundle +import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity import umc.com.mobile.project.MainActivity import umc.com.mobile.project.databinding.ActivityLoginBinding +import umc.com.mobile.project.ui.login.viewmodel.LoginViewModel class LoginActivity : AppCompatActivity() { private lateinit var binding: ActivityLoginBinding + private val viewModel: LoginViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -15,6 +18,9 @@ class LoginActivity : AppCompatActivity() { binding = ActivityLoginBinding.inflate(layoutInflater) setContentView(binding.root) + binding.vm = viewModel + binding.lifecycleOwner = this + binding.btnLogin.setOnClickListener { val intent = Intent(this@LoginActivity, MainActivity::class.java) startActivity(intent) diff --git a/app/src/main/java/umc/com/mobile/project/ui/login/viewmodel/LoginViewModel.kt b/app/src/main/java/umc/com/mobile/project/ui/login/viewmodel/LoginViewModel.kt new file mode 100644 index 00000000..742ab155 --- /dev/null +++ b/app/src/main/java/umc/com/mobile/project/ui/login/viewmodel/LoginViewModel.kt @@ -0,0 +1,28 @@ +package umc.com.mobile.project.ui.login.viewmodel + +import androidx.lifecycle.LiveData +import androidx.lifecycle.MediatorLiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel + +class LoginViewModel: ViewModel() { + /** + * 버튼 활성화 기능 + */ + val id: MutableLiveData = MutableLiveData() + val pw: MutableLiveData = MutableLiveData() + + val isFilledAllOptions: LiveData = MediatorLiveData().apply { + addSource(id) { value = isBothFieldsFilled() } + addSource(pw) { value = isBothFieldsFilled() } + } + + private fun isBothFieldsFilled(): Boolean { + return !id.value.isNullOrEmpty() && !pw.value.isNullOrEmpty() + } + + fun init() { + id.postValue("") + pw.postValue("") + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_solid_blue_radius_25.xml b/app/src/main/res/drawable/bg_solid_blue_radius_25.xml new file mode 100644 index 00000000..d4ca2d7a --- /dev/null +++ b/app/src/main/res/drawable/bg_solid_blue_radius_25.xml @@ -0,0 +1,5 @@ + + + + + \ 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 dcd67656..aafb641c 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -1,90 +1,103 @@ - + xmlns:tools="http://schemas.android.com/tools"> - + - + + - - - + android:layout_height="match_parent" + android:background="@color/ivory" + android:gravity="center" + android:orientation="vertical" + tools:context=".ui.verification.VerificationFragment"> - + - + - + + + + + + + + + - \ No newline at end of file + + \ No newline at end of file