(TimeTable은 문제시 삭제하겠습니다)
- 02:00, 요즘은 ConstraintLayout을 사용하는 추세이다.
- 05:05, colors.xml를 활용해보자 -> 유지보수가 편해진다.
- 07:22, strings.xml에 선언한 값을 kotlin code에서 불러올 수 있다 -> getString(R.string.resId)
Toast.makeText(this, getString(R.string.toast_msg_idpwErr), Toast.LENGTH_SHORT).show()
//strings.xml
<resources>
<string name="toast_msg_idpwErr">아이디/비밀번호를 확인해주세요</string>
</resources>
- 13:00, isFinishing 프로퍼티를 활용하여 Activity가 종료중인지 체크하고, 안전하게 finish() 할 수 있다.
// ...
// 액티비티를 종료하면 되는 상황
if (!isFinishing) {
finish()
}
// Activity.java의 내부 코드
public boolean isFinishing() {
return mFinished;
}
정의로 가보니 isFinishing는 프로퍼티가 아니라 메서드였다. 그래서 괄호를 붙여 호출해보니 아래와 같이 경고가 떴다.
Use of getter method instead of property access syntax -> 속성 액세스 구문 대신 getter 메서드 사용
- 15:50, intent.hasExtra("key") 메서드를 통해서 해당 키값이 있는지 체크할 수 있다.
if (intent.hasExtra("userData")) {
userData = result.data?.getSerializableExtra("userData") as UserData
}
- 16:22, images 배열에 이미지 5장을 다 불러와서 인덱스로 접근하는 게 아니라 when 문으로 처리함 (메모리 효율적일 듯)
val image = when((0..5).random()) {
0 -> R.drawable.image1
1 -> R.drawable.image2
2 -> R.drawable.image3
3 -> R.drawable.image4
4 -> R.drawable.image5
else -> { } // 예외 처리
}
이미지가 100개 이상이라면 어떻게 하는 게 정석일까,,,?
- 16:22, Range.random() 함수 사용해서 랜덤 넘버를 만들 수 있다(kotlin만이 가능함) -> 이런 방법도 있구나,,, 쩐다.
val randomNumber = (0..4).random()
- 22:16, <selector> 태그의 활용 -> 유용할 듯!!!
버튼 디자인.xml에서 item 태그의 android:state_pressed="true" 속성 즉, 버튼이 눌렸을 때의 디자인(색상 변화)을 별도로 해줄 수 있음!!!
마찬가지로 item 태그의 android:state_focused="true" 속성과 pressed 속성을 통해 drawable image를 셋업해줄 수도 있었다. -> 난 다 코드에서 했던 기억이,,,
-> 기억해두기 : pressed와 focused 상태에 따른 디자인 변화는 Activity나 viewModel에 없어도 되는 코드이다.
'Android' 카테고리의 다른 글
스탠다드 2주차 강의내용 정리 및 과제(LifeCycle) (0) | 2024.04.10 |
---|---|
챌린지 3주차 과제 해설 리뷰 (0) | 2024.04.09 |
안드로이드 Button 디자인(shape, corners, stroke, gradient) (3) | 2024.03.29 |
[학습 1장] findViewById / Kotlin Extensions / ViewBinding / DataBinding 정리 (0) | 2024.03.28 |
[docs] 앱 아키텍처 가이드 읽어보기 (1) | 2024.03.22 |