wanna be dev 🧑‍💻

Cool 하고 Sick한 개발자가 되고 싶은 uzun입니다

A.K.A. Kick-snare, hyjhyj0901, h_uz99 solvedac-logo

Android/Challenge

패스트캠퍼스 챌린지 21일차

Kick_snare 2022. 2. 13. 23:52
728x90

21일차

30개 프로젝트로 배우는 Android 앱 개발 with Kotlin 초격차 패키지 Online

강의 목표


  • 프로젝트를 따라해보며 앱개발에 필요한 기술을 학습할 수 있습니다.
  • 프로젝트를 따라해보며 앱개발에 필요한 기술을 학습할 수 있습니다.
  • 앱 개발시 원하는 기능을 구현하기 위해 어떤 기술이 필요한 지 알 수 있습니다.
  • 디자인 아키텍처 패턴, 비동기 처리 등 효율적인 앱 개발 방법을 익힐 수 있습니다.

목차 02 Basic - Ch03. 비밀 다이어리


  • 인트로 (완성앱&구현기능소개)
  • 기본 UI 그리기
  • 자물쇠 페이지 구현하기 (로그인, 비밀번호 변경)
  • 다이어리 화면 구현하기 (글 작성, 삭제)
  • 아웃트로

자물쇠 페이지 구현하기 (로그인, 비밀번호 변경)

  • 비밀 번호 변경 버튼의 로직을 짜보자
  • 비밀 번호 변경 상태임을 저장하는 변수 changePasswordMode 를 사용한다

버튼을 눌렀는데 이미 변경모드일때

val passwordPreference = getSharedPreferences("password", Context.MODE_PRIVATE)
val passwordFromUser = "${numberPicker1.value}${numberPicker2.value}${numberPicker3.value}"

if(changePasswordMode) {
    passwordPreference.edit(true) {
        putString("password", passwordFromUser)
    }
    changePasswordMode = false;
    chagePasswordBtn.setBackgroundColor(Color.BLACK)

}
  • sharedPreferences를 사용하여 pw와 사용자가 numberpicker에 입력한 비밀번호를 가져온다
  • edit 람다 함수를 이용하여 로컬 DB를 수정해준다
  • 인자로 들어간 ture는 apply와 commit 중 commit 을 하게 해준다
  • commmit과 다르게 apply 는 비동기적으로 움직인다
  • 굳이 빠른 동작이 필요하지 않음으로 Commit으로 구현
  • 변경후에는 다시 모드를 바꾸고 버튼색도 바꿔준다

버튼을 눌러서 변경모드로 바꿀때

else {
    if(passwordPreference.getString("password", "000").equals(passwordFromUser)){
        changePasswordMode = true
        Toast.makeText(this, "변경할 비밀번호를 입력해주세요", Toast.LENGTH_SHORT).show()
        chagePasswordBtn.setBackgroundColor(Color.RED)

    } else {
        // 잠금 해제 실패
        showErrorAlertDialog()
    }
}
  • 저장된 비밀번호와 numberpicker의 비밀번호를 비교한다
  • 맞으면 변경모드로 바뀌며 색도 바꿔줌
  • 아니면 잠금 해제 실패
private fun showErrorAlertDialog() {
    AlertDialog.Builder(this)
        .setTitle("실패!!")
        .setMessage("비밀번호가 잘못되었습니다.")
        .setPositiveButton("확인") { _, _ -> }
        .create()
        .show()
}
  • 잠금 해제 실패를 위와 같이 중복 사용되는 부분을 모듈화 하였다

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

수강인증샷

링크

https://bit.ly/37BpXiC

728x90