[오늘 배운 내용]
-1- UI
안드로이드 스튜디오에서 제공하는 UI 버튼 기능들 공부
디자인 탭에 들어가면 흰색레이아웃 옆에 초록색 청사진이 계속 떠있어서 불편했는데
Design and Blueprint 가 체크되어 있어 그렇더라 Design 체크해주니까 깔끔하게 흰색 레이아웃만 남았다.
Blueprint는레이아웃들의 윤곽만 보여준다
개발할 때 Design에서 겹침등의 현상을 잡아낼 때 요긴하게 쓰인다고 하는데
아직 나는 개발단계에서는 사용할 필요 없을 것 같아서 꺼두기로 했다.
-2- .xml 에서 위젯에 id 지정 "@+id/원하는id"
findViewById<위젯타입>(R.id.지정한id) 로 id로 지정한 UI와 연결이 가능
findViewById 와 View Binding 의 차이에 대해서 간단하게 공부
findViewById 를 사용하지 않고, viewBiding 을 주로 사용하는 이유는
findViewById 은 Null 오류가 발생할 수 있다는 Null 안정성 문제와, viewBinding에 비해 Type안정성이 떨어진다는 이유다.
속도도 viewBinding이 상대적으로 빠르다고 한다.
view Binding 적용법
viewBinding 은 .gadle(module) 에 android{} 안에 해당 코드를 입력해준 뒤
코드입력창 상단에 sync now 를 눌러주면 적용된다.
안드로이드 스튜디오 4.0 버전 이상에서만 해당 코드로 설정 가능하다고 한다.
buildFeatures {
viewBinding true
}
-3- buttonName.setOnClickListener{ } 로 버튼 클릭 시 이벤트 추가 가능.
해당 부분은 뷰 바인딩 공부하고, UI 공부하는데 시간을 많이 보내서 자세히 검색 해보지 못 했다.
시간이 나게 되면 좀 더 공부해서 상세하게 적을 수 있도록 해야겠다.
[오늘 복습한 내용]
- Colletion
1. 콜렉션은 동일한 유형의 여러 객체를 담을 수 있는 범위를 말한다 변수 그룹이며 포함된 객체가 0 개일 수 있다.
2. 콜렉션의 개체를 요소 또는 항목이라고 한다고 한다.
3. LIst, Set, Map 을 사용해서 컬렉션을 생성할 수 있다.
- List : List에 추가된 순서대로 Index값을 가지며 동일한 값을 추가할 수 있다.
Index는 0부터 시작한다.
list.get(i) 또는 list[i] 로 인덱스에 해당하는 값을 불러올 수 있으나 존재하지 않는 값을 불러들이면 컴파일 오류가 난다.
.getOrNull(i) 을 사용해서 Null값이 나올 수 있는 경우, null을 출력할 수 있도록 해주자. - MutableList는 리스트안의 요소들이 변경 가능하다.
val numbers = mutableListOf(1, 2, 3, 4)
numbers.add(5)
numbers.removeAt(1)
numbers[0] = 0 // 인덱스 값에 해당하는 값을 변경
numbers.shuffle()
println(numbers)
- 리스트 요소는 중복될 수 있고 단일 개체의 항목이 여러 개 포함될 수 있는데
이 과정에서 두 목록의 크기가 같고 구조적으로 동일한 요소가 동일한 위치에 있으면 동일한 것으로 간주한다.
val bob = Person("Bob", 31)
val people = listOf(Person("Adam", 20), bob, bob)
val people2 = listOf(Person("Adam", 20), Person("Bob", 31), bob)
println(people == people2) // true 출력
bob.age = 32
println(people == people2) // false 출력
- Set : List와 다르게 동일한 값을 추가할 수 없으며, List의Index 처럼 순서도 상관하지 않는다.
val numbers = setOf(1, 2, 3, 4) // LinkedHashSet is the default implementation
val numbersBackwards = setOf(4, 3, 2, 1)
println(numbers.first() == numbersBackwards.first()) //false 출력
println(numbers.first() == numbersBackwards.last()) // true 출력
- Map : 맵(dictionary) 은 key와 value의 쌍으로 형성된다. key에 해당하는 값은 여러개 중복되는 key 값으로 설정할 수 없으며, 하나의 key는 하나의 value에 할당된다. value는 동일한 값을 넣을 수 있다
- (value in map.values) 로 true, false 확인 가능
val numbersMap = mapOf("key1" to 1, "key2" to 2, "key3" to 3, "key4" to 1)
println("All keys: ${numbersMap.keys}")
println("All values: ${numbersMap.values}")
if ("key2" in numbersMap) println("Value by key \"key2\": ${numbersMap["key2"]}")
if (1 in numbersMap.values) println("The value 1 is in the map")
if (numbersMap.containsValue(1)) println("The value 1 is in the map")
[오류,에러 등등]
1. 예전에 안드로이드 스튜디오에서 지원해주던 material3 을 젯팩으로 적용해보려고 했는데 계속 실패했다.
에러코드도 한 두 줄이 아니라서 시도 방법 자체가 잘 못된 것 같다. 다른 방법으로 추후에 재시도 예정.
2. constraintlayout 에서 a위젯 id를 바꿨는데 a위젯에 의존하고 있던 다른 위젯들도 위치가 튀어 버렸다.
- id를 수정하게 될 때에는 ctrl + shift + R 로 해당 id를 전부 다 바꾸는 걸로 하니까 수월해졌다.
3.
[느낀 점]
1. 개인과제 viewbinding을 사용하지 않고 findViewById 로 작성해야 하는 것을 오늘 알았다.
lv3 까지는 엄두를 안내서 아래까지 내려보지 않았는데, 앞으로는 진행하는 내용을 다 읽도록 해야겠다.
2. 작성시간 21:00 기준 오늘 집중한 시간 7:04:21 인데, 정작 배운 내용은 없는 것 같다.
집중하기 전에 어떤 것을 배워야할지, 필요한 부분이 어떤건지 구상을 잘 해놓고 집중하도록 해야겠다.
3. lambda를 갑자기 배우다가, collection 을 배우다가, UI Layout을 공부하다가 당장 궁금한 내용만 해결되면 끝까지 알아보려고 하지 않고 도중에 다른 의문을 풀러가서 완벽하게 정리되는 내용이 없는 것 같다.
특정 한 종류를 시작했으면 해당 내용과 관련된 내용 또는 해당 부분을 완벽하게 끝마치고 다른 내용으로 넘어갈 수 있도록해야겠다.
'TIL' 카테고리의 다른 글
[TIL] 20230809 (0) | 2023.08.09 |
---|---|
[TIL] 20230808 5일차 (0) | 2023.08.08 |
[TIL] 20230804 - 4일차 (0) | 2023.08.05 |
[TIL]20230803 - 3일차 (0) | 2023.08.03 |
[TIL] 20230801 - 블로그 시작 등... (0) | 2023.08.01 |