From 6291dbd4f160e3d44a065b379fa82515b373d846 Mon Sep 17 00:00:00 2001 From: Seoyeon Park Date: Mon, 14 Aug 2023 13:19:08 +0900 Subject: [PATCH] =?UTF-8?q?[Fix]=20:=20=EC=B7=A8=EC=86=8C=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 1 + app/src/main/AndroidManifest.xml | 5 + .../presentation/adapter/JobGroupAdapter.kt | 15 +-- .../ui/jobGroup/JobGroupActivity.kt | 19 +++- .../presentation/ui/login/LoginActivity.kt | 3 +- .../presentation/ui/mypage/MyPageFragment.kt | 14 ++- .../presentation/ui/mypage/ProfileActivity.kt | 106 +++++++++++++++--- ...e_to_profile.xml => ic_my_page_logout.xml} | 0 ...ic_mypage_menu.xml => ic_my_page_menu.xml} | 0 ...{ic_setting.xml => ic_my_page_setting.xml} | 0 ...ic_mypage_user.xml => ic_my_page_user.xml} | 0 .../main/res/layout/activity_job_group.xml | 11 +- app/src/main/res/layout/activity_profile.xml | 64 ++++++----- app/src/main/res/layout/fragment_mypage.xml | 64 ++++++----- app/src/main/res/layout/item_job_group.xml | 1 + app/src/main/res/values/strings.xml | 8 +- 16 files changed, 216 insertions(+), 95 deletions(-) rename app/src/main/res/drawable/{ic_mypage_to_profile.xml => ic_my_page_logout.xml} (100%) rename app/src/main/res/drawable/{ic_mypage_menu.xml => ic_my_page_menu.xml} (100%) rename app/src/main/res/drawable/{ic_setting.xml => ic_my_page_setting.xml} (100%) rename app/src/main/res/drawable/{ic_mypage_user.xml => ic_my_page_user.xml} (100%) diff --git a/app/build.gradle b/app/build.gradle index e6c2b509..6993bd54 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -97,6 +97,7 @@ dependencies { // Coroutine implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3' + implementation("io.coil-kt:coil:2.0.0-rc03") // RoomDB def room_version = '2.5.2' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 66facdfa..3e861d28 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -3,6 +3,11 @@ xmlns:tools="http://schemas.android.com/tools"> + + + + "steel" "석유·화학" -> "Petroleum/Chemical" "정유" -> "oilrefining" "2차 전지" -> "secondarybattery" - "반도체" -> "Semiconductor" "디스플레이" -> "Display" "휴대폰" -> "Mobile" "IT" -> "it" - "자동차" -> "car" "조선" -> "Shipbuilding" "해운" -> "Shipping" "F&B" -> "FnB" - "소매유통" -> "RetailDistribution" "건설" -> "Construction" "호텔·여행·항공" -> "HotelTravel" "섬유·의류" -> "FiberClothing" - else -> "" - } - } } diff --git a/app/src/main/java/com/example/cherry_pick_android/presentation/ui/jobGroup/JobGroupActivity.kt b/app/src/main/java/com/example/cherry_pick_android/presentation/ui/jobGroup/JobGroupActivity.kt index b717de7d..4fd80915 100644 --- a/app/src/main/java/com/example/cherry_pick_android/presentation/ui/jobGroup/JobGroupActivity.kt +++ b/app/src/main/java/com/example/cherry_pick_android/presentation/ui/jobGroup/JobGroupActivity.kt @@ -18,6 +18,7 @@ import com.example.cherry_pick_android.databinding.ActivityJobGroupBinding import com.example.cherry_pick_android.presentation.adapter.JobGroupAdapter import com.example.cherry_pick_android.presentation.ui.home.HomeActivity import com.example.cherry_pick_android.presentation.ui.jobGroup.JobGroups.jobgroups +import com.example.cherry_pick_android.presentation.ui.mypage.ProfileActivity import com.example.cherry_pick_android.presentation.viewmodel.login.LoginViewModel import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.Dispatchers @@ -74,7 +75,6 @@ class JobGroupActivity: AppCompatActivity() { } - /* 주요 변경 사항 (밑에 2문단 코드) */ private val onCompleteButtonStateChanged: () -> Unit = { updateCompleteButtonState() // 완료 버튼 상태 갱신 } @@ -91,6 +91,17 @@ class JobGroupActivity: AppCompatActivity() { } } + // 직군을 영문으로 매핑 작업 + fun mapperToJob(value: String): String{ + return when(value){ + "철강" -> "steel" "석유·화학" -> "Petroleum/Chemical" "정유" -> "oilrefining" "2차 전지" -> "secondarybattery" + "반도체" -> "Semiconductor" "디스플레이" -> "Display" "휴대폰" -> "Mobile" "IT" -> "it" + "자동차" -> "car" "조선" -> "Shipbuilding" "해운" -> "Shipping" "F&B" -> "FnB" + "소매유통" -> "RetailDistribution" "건설" -> "Construction" "호텔·여행·항공" -> "HotelTravel" "섬유·의류" -> "FiberClothing" + else -> "" + } + } + // 최초사용자의 여부에 따라 화면전환 private fun onCompleteBtn(){ binding.btnJobComplete.setOnClickListener { @@ -108,9 +119,9 @@ class JobGroupActivity: AppCompatActivity() { gender = gender, memberNumber = userId, name = name, - industryKeyword1 = selecetedJobList.getOrElse(0){ "" }, - industryKeyword2 = selecetedJobList.getOrElse(1){ "" }, - industryKeyword3 = selecetedJobList.getOrElse(2){" "} + industryKeyword1 = mapperToJob(selecetedJobList.getOrElse(0){ "" }), + industryKeyword2 = mapperToJob(selecetedJobList.getOrElse(1){ "" }), + industryKeyword3 = mapperToJob(selecetedJobList.getOrElse(2){" "}) ) lifecycleScope.launch { val saveUserResponse = saveUserService.saveUserInform(request) diff --git a/app/src/main/java/com/example/cherry_pick_android/presentation/ui/login/LoginActivity.kt b/app/src/main/java/com/example/cherry_pick_android/presentation/ui/login/LoginActivity.kt index aff0680e..afb6960f 100644 --- a/app/src/main/java/com/example/cherry_pick_android/presentation/ui/login/LoginActivity.kt +++ b/app/src/main/java/com/example/cherry_pick_android/presentation/ui/login/LoginActivity.kt @@ -81,7 +81,8 @@ class LoginActivity: AppCompatActivity() { binding.tvExplain.text = textToBold(binding.tvExplain.text.toString(), 7, 17) binding.tvExplain2.text = textToBold(binding.tvExplain2.text.toString(), 0, 16) - onClickLogin() + + //onClickLogin() } diff --git a/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/MyPageFragment.kt b/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/MyPageFragment.kt index 29abb1f7..d84daf86 100644 --- a/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/MyPageFragment.kt +++ b/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/MyPageFragment.kt @@ -8,6 +8,7 @@ import android.view.View import android.view.ViewGroup import com.example.cherry_pick_android.R import com.example.cherry_pick_android.databinding.FragmentMypageBinding +import com.example.cherry_pick_android.presentation.ui.newsSearch.NewsSearchActivity class MyPageFragment : Fragment() { private var _binding: FragmentMypageBinding? = null @@ -31,11 +32,18 @@ class MyPageFragment : Fragment() { private fun setButton() { binding.apply { + // 로그아웃 + ibtnMypageLogout.setOnClickListener { + + } // 계정설정 (프로필) 페이지로 이동 - ibtnMypageToProfile.setOnClickListener{ - val intent = Intent(it.context,ProfileActivity::class.java) - it.context.startActivity(intent) + ibtnMypageSetting.setOnClickListener { + activity?.let { + val intent = Intent(it, ProfileActivity::class.java) + it.startActivity(intent) + } } + // 스토어 별점 남기기 이동 ibtnMoveToScore.setOnClickListener { // val intent = Intent(Intent.ACTION_VIEW) diff --git a/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/ProfileActivity.kt b/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/ProfileActivity.kt index 84df2c69..c20252dd 100644 --- a/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/ProfileActivity.kt +++ b/app/src/main/java/com/example/cherry_pick_android/presentation/ui/mypage/ProfileActivity.kt @@ -1,19 +1,67 @@ package com.example.cherry_pick_android.presentation.ui.mypage -import android.app.Activity +import android.content.ContentValues import android.content.Intent +import android.content.pm.PackageManager +import android.net.Uri import android.os.Bundle +import android.provider.MediaStore import android.util.Log +import android.view.Gravity +import android.view.Window +import android.widget.Toast import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AppCompatActivity -import androidx.databinding.DataBindingUtil.setContentView +import androidx.core.content.ContextCompat +import coil.load import com.example.cherry_pick_android.R import com.example.cherry_pick_android.databinding.ActivityProfileBinding import com.example.cherry_pick_android.presentation.ui.jobGroup.JobGroupActivity +import com.example.cherry_pick_android.presentation.ui.mypage.dialog.CameraDialog +import com.example.cherry_pick_android.presentation.ui.mypage.dialog.CameraDialogInterface +import java.sql.Date +import java.text.SimpleDateFormat -class ProfileActivity : AppCompatActivity() { + +class ProfileActivity : AppCompatActivity(),CameraDialogInterface { private lateinit var binding: ActivityProfileBinding + companion object { + const val REQUEST_CODE_PERMISSIONS = 1001 + const val ALBUM_OK = 2002 + const val CAMERA_OK = 2003 + const val BASIC_OK = 2004 + const val TAG = "ProfileActivity" + } + + + private fun checkPermission(permissions: Array): Boolean { + return permissions.all { + ContextCompat.checkSelfPermission(this, it) == PackageManager.PERMISSION_GRANTED + } + } + + // 이미지 로드 + private val readImage = registerForActivityResult( + ActivityResultContracts.GetContent()) { + uri -> binding.ivProfilePic.load(uri) + } + + // 카메라를 실행한 후 찍은 사진을 저장 + var pictureUri: Uri? = null + private val getTakePicture = registerForActivityResult(ActivityResultContracts.TakePicture()) { + if(it) { + pictureUri.let { binding.ivProfilePic.setImageURI(pictureUri) } + } + } + // 파일 불러오기 + private val getContentImage = registerForActivityResult( + ActivityResultContracts.GetContent()) { + uri -> + uri.let { binding.ivProfilePic.setImageURI(uri) + } + } + // 직군선택 결과 받아오기 private val getResultText = registerForActivityResult( ActivityResultContracts.StartActivityForResult()){ result-> if (result.resultCode == RESULT_OK){ @@ -30,7 +78,7 @@ class ProfileActivity : AppCompatActivity() { setContentView(view) goBack() - ChangeImage() + showCameraDialog() ChangeName() ChangeJobInterest() LeaveAccount() @@ -45,21 +93,44 @@ class ProfileActivity : AppCompatActivity() { } // 프로필 사진 변경 - private fun ChangeImage() { - binding.ivProfilePic.setOnClickListener{ - - // 앨범에서 사진 선택 - - // 촬영하기->고유 이름으로 파일 생성->갤러리에 사진추가 - //dispatchTakePictureIntent() - //createImageFile() - //galleryAddPic() - // 기본 이미지로 변경 - - // 취소 - + fun showCameraDialog() { + binding.ibtnProfileCamera.setOnClickListener{ + val dialog = CameraDialog(this) + dialog.show(this.supportFragmentManager, "CameraDialog") + } + } + override fun onCameraClick(cameraMenu: String) { + val camera_menu = cameraMenu + + //readImage.launch() + // 권한 확인 + //checkPermission.launch(permissionList) + //if (!checkPermission(permissions)) { + // requestPermissions(permissions, REQUEST_CODE_PERMISSIONS) + //} + + if (camera_menu=="@string/profile_img_fromAlbum"){ + getContentImage.launch("image/*") + } + else if (camera_menu=="@string/profile_img_fromCamera"){ + pictureUri = createImageFile() + getTakePicture.launch(pictureUri) + } + else if (camera_menu=="@string/profile_img_basic"){ + binding.ivProfilePic.setImageResource(R.drawable.ic_my_page_user) + } + else if (camera_menu=="@string/profile_img_cancel"){ + // 변화없음 } } + private fun createImageFile(): Uri? { + val now = SimpleDateFormat("yyMMdd_HHmmss").format(System.currentTimeMillis()) + val content = ContentValues().apply { + put(MediaStore.Images.Media.DISPLAY_NAME, "img_$now.jpg") + put(MediaStore.Images.Media.MIME_TYPE, "image/jpg") + } + return contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, content) + } // 직군정보 변경페이지로 이동 private fun ChangeJobInterest() { @@ -102,4 +173,5 @@ class ProfileActivity : AppCompatActivity() { } } + } \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_mypage_to_profile.xml b/app/src/main/res/drawable/ic_my_page_logout.xml similarity index 100% rename from app/src/main/res/drawable/ic_mypage_to_profile.xml rename to app/src/main/res/drawable/ic_my_page_logout.xml diff --git a/app/src/main/res/drawable/ic_mypage_menu.xml b/app/src/main/res/drawable/ic_my_page_menu.xml similarity index 100% rename from app/src/main/res/drawable/ic_mypage_menu.xml rename to app/src/main/res/drawable/ic_my_page_menu.xml diff --git a/app/src/main/res/drawable/ic_setting.xml b/app/src/main/res/drawable/ic_my_page_setting.xml similarity index 100% rename from app/src/main/res/drawable/ic_setting.xml rename to app/src/main/res/drawable/ic_my_page_setting.xml diff --git a/app/src/main/res/drawable/ic_mypage_user.xml b/app/src/main/res/drawable/ic_my_page_user.xml similarity index 100% rename from app/src/main/res/drawable/ic_mypage_user.xml rename to app/src/main/res/drawable/ic_my_page_user.xml diff --git a/app/src/main/res/layout/activity_job_group.xml b/app/src/main/res/layout/activity_job_group.xml index 855c2f9e..795d6f41 100644 --- a/app/src/main/res/layout/activity_job_group.xml +++ b/app/src/main/res/layout/activity_job_group.xml @@ -17,8 +17,8 @@ @@ -82,6 +84,7 @@ android:text="@string/job_change_instruction2" android:textColor="@color/black" android:textSize="20sp" + android:fontFamily="@font/pretendard_medium" app:layout_constraintTop_toBottomOf="@+id/ll_job_change_guide" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" @@ -94,6 +97,7 @@ android:text="@string/job_change_instruction3" android:textColor="@color/gray_5" android:textSize="14sp" + android:fontFamily="@font/pretendard_regular" android:layout_marginTop="15dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" @@ -135,7 +139,8 @@ android:text="@string/job_change_complete" android:textColor="@color/white" android:textSize="16sp" - android:enabled="true" /> + android:fontFamily="@font/pretendard_semi_bold" + android:enabled="false" /> diff --git a/app/src/main/res/layout/activity_profile.xml b/app/src/main/res/layout/activity_profile.xml index c87b00e2..7e94785b 100644 --- a/app/src/main/res/layout/activity_profile.xml +++ b/app/src/main/res/layout/activity_profile.xml @@ -13,13 +13,16 @@ android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" - tools:ignore="MissingConstraints"> + tools:ignore="MissingConstraints" + tools:layout_editor_absoluteX="0dp" + tools:layout_editor_absoluteY="-2dp"> + android:textColor="@color/gray_5" + android:textSize="20sp" /> + android:textSize="14sp" /> @@ -74,7 +79,7 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" - app:srcCompat="@drawable/ic_mypage_user" /> + app:srcCompat="@drawable/ic_my_page_user" /> + android:textColor="@color/gray_4" + android:fontFamily="@font/pretendard_regular" /> + android:textSize="18sp" + android:fontFamily="@font/pretendard_medium"/> @@ -151,7 +157,7 @@ @@ -167,7 +173,8 @@ android:layout_height="wrap_content" android:text="@string/profile_sex" android:textSize="12sp" - android:textColor="@color/gray_4" /> + android:textColor="@color/gray_4" + android:fontFamily="@font/pretendard_regular" /> + android:textSize="18sp" + android:fontFamily="@font/pretendard_medium" /> @@ -198,13 +206,15 @@ android:layout_height="wrap_content" android:text="@string/profile_birth" android:textSize="12sp" - android:textColor="@color/gray_4" /> + android:textColor="@color/gray_4" + android:fontFamily="@font/pretendard_regular" /> @@ -213,7 +223,7 @@ @@ -229,7 +239,8 @@ android:layout_height="wrap_content" android:text="@string/profile_job" android:textSize="12sp" - android:textColor="@color/gray_4" /> + android:textColor="@color/gray_4" + android:fontFamily="@font/pretendard_regular" /> + android:textSize="18sp" + android:fontFamily="@font/pretendard_medium" /> diff --git a/app/src/main/res/layout/fragment_mypage.xml b/app/src/main/res/layout/fragment_mypage.xml index 903a9fd6..2a01300d 100644 --- a/app/src/main/res/layout/fragment_mypage.xml +++ b/app/src/main/res/layout/fragment_mypage.xml @@ -22,31 +22,31 @@ android:id="@+id/ll_mypage_buttons" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="12dp" + android:layout_marginTop="20dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toTopOf="@+id/ll_mypage_user"> + app:layout_constraintEnd_toStartOf="@+id/ibtn_mypage_setting"/> @@ -73,14 +73,17 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" - app:srcCompat="@drawable/ic_mypage_user" /> + app:srcCompat="@drawable/ic_my_page_user" /> + android:text="@string/mypage_user_id" + android:textColor="@color/black" + android:textSize="16sp" + android:fontFamily="@font/pretendard_medium" /> @@ -99,9 +102,9 @@ + android:layout_marginBottom="20dp"/> + android:textColor="@color/black" + android:textSize="16sp" /> @@ -134,45 +140,51 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" - android:layout_marginTop="15dp"> + android:layout_marginTop="20dp"> + android:textColor="@color/black" + android:textSize="16sp" /> + + android:layout_marginTop="20dp" + android:layout_marginBottom="20dp"/> + android:textColor="@color/gray_6" + android:textSize="14sp" /> + android:text="@string/mypage_privacy_policy" + android:textSize="14sp" + android:fontFamily="@font/pretendard_light" /> diff --git a/app/src/main/res/layout/item_job_group.xml b/app/src/main/res/layout/item_job_group.xml index e2b67da9..8f086569 100644 --- a/app/src/main/res/layout/item_job_group.xml +++ b/app/src/main/res/layout/item_job_group.xml @@ -35,6 +35,7 @@ android:text="철강" android:textColor="@color/black" android:textSize="17sp" + android:fontFamily="@font/pretendard_medium" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8e68d3b8..de8d6624 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -37,9 +37,6 @@ 유저네임a - 저장한 기사 - 직군 정보 변경 - 키워드 설정 스토어 별점 남기기 이용약관 및 사용자 정책 언론사 연락처 @@ -53,8 +50,11 @@ 생년월일 직군 정보 - 로그아웃 + 앨범에서 사진 선택 + 촬영하기 + 기본 이미지로 변경 + 취소