wanna be dev 🧑‍💻

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

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

Android/Challenge

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

Kick_snare 2022. 2. 12. 12:17
728x90

20일차

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

강의 목표


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

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


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

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

  • View를 완성했으니 구현을 위해 코틀린 코틀린 코드로 로직을 짠다
  • 먼저 numberPicker 뷰파트를 가져오면서, min max 값을 초기화한다
private val numberPicker1: NumberPicker by lazy {
    findViewById<NumberPicker>(R.id.NP1)
        .apply {
            minValue = 0
            maxValue = 9
        }
}
  • apply 를 이용하여 선언과 동시에 min, max값을 초기화 할 수 있다
  • lazy 를 사용함으로써 onCreate() 가 생성되기 전에 먼저 선언되는 것을 막는다!
    • numberPicker가 사용되는 시점에 초기화된다
  • 잠금해제 버튼을 가져오고 핸들러를 달아준다
  • SharedPreferences 를 사용하여 local DB를 사용하되, 다른 앱과 공유하지 않음으로 MODE_PRIVATE 으로 사용
  • 성공 시 잠금해제, 실패시 경고 창을 띄어준다
unlockBtn.setOnClickListener {
    val passwordPreference = getSharedPreferences("password", Context.MODE_PRIVATE)
    val passwordFromUser = "${numberPicker1.value}${numberPicker2.value}${numberPicker3.value}"

    if(passwordPreference.getString("password", "000").equals(passwordFromUser)){
        // 잠금 해제 성공
        // TODO 다이어리 페이지 작성 후에 넘겨주기
        // startActivity()

    } else {
        // 잠금 해제 실패
        AlertDialog.Builder(this)
            .setTitle("실패!!")
            .setMessage("비밀번호가 잘못되었습니다.")
            .setPositiveButton("확인") { _, _ -> }
            .create()
            .show()
    }
}
  • Preference 에 defalut 값으로 000과 비교한다
  • Alert 객체를 Builder 패턴으로 생성하여 보여준다
  • 닫기 위한 확인 창에는 별다른 핸들러가 필요하지 않음으로 생략된 람다식으로 채워준다

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

수강인증샷

링크

https://bit.ly/37BpXiC

728x90