728x90
22일차
30개 프로젝트로 배우는 Android 앱 개발 with Kotlin 초격차 패키지 Online
강의 목표
- 프로젝트를 따라해보며 앱개발에 필요한 기술을 학습할 수 있습니다.
- 프로젝트를 따라해보며 앱개발에 필요한 기술을 학습할 수 있습니다.
- 앱 개발시 원하는 기능을 구현하기 위해 어떤 기술이 필요한 지 알 수 있습니다.
- 디자인 아키텍처 패턴, 비동기 처리 등 효율적인 앱 개발 방법을 익힐 수 있습니다.
목차 02 Basic - Ch03. 비밀 다이어리
인트로 (완성앱&구현기능소개)기본 UI 그리기자물쇠 페이지 구현하기 (로그인, 비밀번호 변경)- 다이어리 화면 구현하기 (글 작성, 삭제)
- 아웃트로
다이어리 화면 구현하기 (글 작성, 삭제)
- 잠금 해제성공하여 다이어리 화면으로 넘어가는 경우 다이어리 화면을 위한 액티비티로 넘기도록 프로그래밍 하였다
- 액티비티를 생성하여 추가하기 위해 먼저 View를 생성한다
- 화면안에 편집할 수 있는 공간을 설계한다
- 다이어리 화면을 표시하는 액티비티 코드 파일을 생성해서 manifest에 등록한다
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_dairy)
val diaryEditText = findViewById<EditText>(R.id.diaryEditText)
val detailPreferences = getSharedPreferences("diary", Context.MODE_PRIVATE)
diaryEditText.setText(detailPreferences.getString("detail", ""))
}
- View의 편집부와 연결하고, 로컬 DB을 가져와 초기값으로 셋팅해준다
- 이제 EditText 뷰 부분을 수정할 때마다 로컬 DB에 내용을 저장하던가 등의 기능이 필요하다
- addTextChangedListener 함수를 달아서 데이터가 변경될 때마다 로컬 DB를 edit할 수 있다
- 하지만 이는 너무 비효율적이며 동기적 동작으로 자연스럽지 못하다
private val handler = Handler(Looper.getMainLooper())
val runnable = Runnable {
getSharedPreferences("diary", Context.MODE_PRIVATE).edit {
putString("detail", diaryEditText.text.toString())
}
}
diaryEditText.addTextChangedListener {
handler.removeCallbacks(runnable)
handler.postDelayed(runnable, 500)
}
- 핸들러와 runnable 객체를 생성한다
- runnable 객체는 비동기적으로 로컬DB를 수정한다 (edit)
- postDelayed에 runnable을 등록함으로써 0.5초 후에 실행된다
- 이때 변경이 또 일어난다면 removeCallback을 통해 이미 등록된 지연 post를 지워버리기 때문에 입력을 연속적으로 한다면 비동기적인 로컬DB 갱신이 되지 않고 0.5초 이상 멈추었을 때에만 edit 되는 것이다
startActivity(Intent(this, DiaryActivity::class.java))
- MainActivity(잠금화면)에서 넘어갈 수 있도록 연결해준다
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
수강인증샷
링크
728x90
'Android > Challenge' 카테고리의 다른 글
패스트캠퍼스 챌린지 24일차 (0) | 2022.02.16 |
---|---|
패스트캠퍼스 챌린지 23일차 (0) | 2022.02.15 |
패스트캠퍼스 챌린지 21일차 (0) | 2022.02.13 |
패스트캠퍼스 챌린지 20일차 (0) | 2022.02.12 |
패스트캠퍼스 챌린지 19일차 (0) | 2022.02.11 |