[안드로이드 ] 안드로이드 공부 용어 공부
it
Kotlin에서 it 키워드는 람다 표현식에서 사용되는 암시적 이름(implicit name)입니다. 이것은 단일 매개변수를 갖는 람다 표현식에서 매개변수의 이름을 생략할 수 있게 해줍니다. 이를 통해 코드가 더 간결하고 읽기 쉬워질 수 있습니다.
val numbers = listOf(1, 2, 3, 4, 5)
// 일반적인 람다 표현식
numbers.forEach { number ->
println(number)
}
// `it` 키워드를 사용하는 람다 표현식
numbers.forEach {
println(it)
}
ROOM
Android jetpack의 일부인 지속성 라이브러리입니다. Room은 SQLite 데이터베이스 위에 있는 추상화 레이어입니다
프로그램
생성 할때 Control + O 하면 생명주기 관련 매서드르 호출할 수 있다.
- onCreate(): 시스템이 앱을 생성할 때 호출됩니다.
- onStart(): 앱이 화면에 표시되도록 하지만 사용자는 아직 앱과 상호작용할 수 없습니다.
- onResume(): 앱을 포그라운드로 가져오고 사용자는 이제 앱과 상호작용할 수 있습니다.
리컴포지션
상태가 변경되었을 수 있는 구성 가능한 함수를 Compose에서 다시 실행하고 업데이트된 UI를 만드는 것을 의미합니다
Android Jetpack
Andriod Jetpack 라이브러리는 뛰어난 Android 앱을 더 간편하게 개발하는 데 사용할 수 있는 라이브러리 모음입니다.
ViewMOdel
구성요소는 UI가 사용하는 상태를 보유하고 노출합니다
StateFlow
현재 상태와 새로운 상태 업데이트를 내보내는 관찰 가능한 데이터 홀더 흐름입니다
# by 속성 위임 정의
인터페이스는 구현하는 클래스가 준수해야 하는 계약으로서, 작업을 하는 방법이 아닌 해야 할 작업에 중점을 둡니다. 인터페이스의 경우 클래스가 인터페이스를 구현합니다. 클래스는 인터페이스에 선언된 메서드와 속성의 구현 세부정보를 제공합니다
KProperty는 선언된 속성을 나타내는 인터페이스이며, 이를 통해 위임된 속성의 메타데이터에 액세스할 수 있습니다
ReadWriteProperty
https://developer.android.com/codelabs/basic-android-kotlin-compose-classes-and-objects?hl=ko&continue=https%3A%2F%2Fdeveloper.android.com%2Fcourses%2Fpathways%2Fandroid-basics-compose-unit-2-pathway-1%3Fhl%3Dko%23codelab-https%3A%2F%2Fdeveloper.android.com%2Fcodelabs%2Fbasic-android-kotlin-compose-classes-and-objects#8
=======
주석
주석은 코드에 추가정보를 첨부하는 방법입니다.
@Json
val imgSrcUrl: String
@Volatile
private var INSTANCE: AppDatabase? = null
예시
- @Composable
- 구성 가능한 함수
- @Preview
- 미리 보기 함수
Modifier
상위 요소 레이아웃 내에서 UI 요소가 배치되고 표시되고 동작하는 방식을 UI 요소에 알려줍니다
리소스 구조
|번호|이름|역활| |—|—| —| |1 |drawable| 이미지 리소스용| |2 |minmap| 런처 아이콘| |3 |values| 문자열 리소스용|
프로젝트 리소는 는 R 클래스에서 생성된 리소스 ID로 액세스 할 수 있다
R.drawable.graphic
R.(서브디렉토리).(리소스ID)
인수
매개변수로 함수를 호출할 때 전달되는 값을 인수라고한다
UI 레이어
- UI 요소: 화면에 데이터를 렌더링하는 구성요소. 이러한 요소는 Jetpack Compose를 사용하여 빌드합니다.
- 상태 홀더: 데이터를 보유하고 UI에 노출하며 앱 로직을 처리하는 구성요소. 상태 홀더의 예로 ViewModel을 들 수 있습니다.
배열
배열은 동일한 유형의 순서가 지정된 데이터를 저장하고 크기가 고정되어 있습니다.
val rockPlanets = arrayOf<String>("Mercury", "Venus", "Earth", "Mars")
val gasPlanets = arrayOf("Jupiter", "Saturn", "Uranus", "Neptune")
// 배열 요소가 더할 수도 있다
val solarSystem = rockPlanets + gasPlanets
배열 에 접근 방법
println(solarSystem[0])
println(solarSystem[1])
println(solarSystem[2])
println(solarSystem[3])
println(solarSystem[4])
println(solarSystem[5])
println(solarSystem[6])
println(solarSystem[7])
* 결과
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune
dlfqn tnwjd
solarSystem[3] = "Little Earth"
# 목록 (list) 목록은 크기 조절이 가능하고 순서가 지정된 컬렉션입니다.
List는 순서가 지정된 읽기 전용 항목 컬렉션과 관련된 속성과 메서드를 정의하는 인터페이스입니다. MutableList는 요소 추가 및 삭제와 같이 목록을 수정하는 메서드를 정의하여 List 인터페이스를 확장합니다.
fun main() {
val solarSystem = listOf("Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune")
}
println(solarSystem.get(3))
println(solarSystem[2])
# 인덱스 호출
println(solarSystem.indexOf("Earth"))
# 반복물 선언 가능
for (planet in solarSystem) {
println(planet)
}
# 수정 가능한 배열
val solarSystem = mutableListOf("Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune")
solarSystem.add("Pluto") //마지막에 추가
solarSystem.add(3, "Theia")
solarSystem[3] = "Future Moon" // 수정
solarSystem.removeAt(9) //삭제
solarSystem.remove("Future Moon") //직접 삭제
세트
세트는 순서가 지정되지 않은 컬렉션이며 중복 값을 포함할 수 없습니다.
val solarSystem = mutableSetOf("Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune")
맵 컬렉션
맵은 세트와 유사하게 작동하고 지정된 유형의 키와 값 쌍을 저장합니다.
왼쪽이 킵값 오른쪽이 숫자
val solarSystem = mutableMapOf(
"Mercury" to 0,
"Venus" to 0,
"Earth" to 1,
"Mars" to 2,
"Jupiter" to 79,
"Saturn" to 82,
"Uranus" to 27,
"Neptune" to 14
)
컬렉션을 사용한 고차 함수
- forEach() forEach()를 사용하여 컬렉션의 각 요소를 반복할 수 있습니다.
class Cookie(
val name: String,
val softBaked: Boolean,
val hasFilling: Boolean,
val price: Double
)
val cookies = listOf(
Cookie(
name = "Chocolate Chip",
softBaked = false,
hasFilling = false,
price = 1.69
),
Cookie(
name = "Banana Walnut",
softBaked = true,
hasFilling = false,
price = 1.49
),
Cookie(
name = "Vanilla Creme",
softBaked = false,
hasFilling = true,
price = 1.59
),
Cookie(
name = "Chocolate Peanut Butter",
softBaked = false,
hasFilling = true,
price = 1.49
),
Cookie(
name = "Snickerdoodle",
softBaked = true,
hasFilling = false,
price = 1.39
),
Cookie(
name = "Blueberry Tart",
softBaked = true,
hasFilling = true,
price = 1.79
),
Cookie(
name = "Sugar and Sprinkles",
softBaked = false,
hasFilling = false,
price = 1.39
)
)
fun main() {
cookies.forEach {
println("Menu item: ${it.name}")
}
}
- map() map()은 종종 다른 데이터 유형의 컬렉션으로 컬렉션의 항목 형식을 지정하는 데 사용됩니다. ``` val fullMenu = cookies.map { “${it.name} - $${it.price}” }
println(“Full menu:”) fullMenu.forEach { println(it) }
3. fliter()
filter()는 컬렉션의 하위 집합을 생성할 수 있습니다.
```kotlin
val softBakedMenu = cookies.filter {
it.softBaked
}
println("Soft cookies:")
softBakedMenu.forEach {
println("${it.name} - $${it.price}")
}
- groupBy() groupBy()는 함수 반환 값을 기준으로 컬렉션을 분할합니다.
val groupedMenu = cookies.groupBy { it.softBaked }
val softBakedMenu = groupedMenu[true] ?: listOf()
val crunchyMenu = groupedMenu[false] ?: listOf()
println("Soft cookies:")
softBakedMenu.forEach {
println("${it.name} - $${it.price}")
}
println("Crunchy cookies:")
crunchyMenu.forEach {
println("${it.name} - $${it.price}")
}
- fold() fold()는 컬렉션을 단일 값으로 변환합니다. ```kotlin val totalPrice = cookies.fold(0.0) {total, cookie -> total + cookie.price }
println(“Total price: $${totalPrice}”)
7. sortBy()
sortedBy()는 지정된 속성별로 컬렉션을 정렬하는 데 사용됩니다.
```kotlin
val alphabeticalMenu = cookies.sortedBy {
it.name
}
println("Alphabetical menu:")
alphabeticalMenu.forEach {
println(it.name)
}
출처
https://developer.android.com/courses/android-basics-compose/course?hl=ko
- 데이터 베이스 관련 정보 https://developer.android.com/codelabs/basic-android-kotlin-compose-persisting-data-room?hl=ko&continue=https%3A%2F%2Fdeveloper.android.com%2Fcourses%2Fpathways%2Fandroid-basics-compose-unit-6-pathway-2%3Fhl%3Dko%23codelab-https%3A%2F%2Fdeveloper.android.com%2Fcodelabs%2Fbasic-android-kotlin-compose-persisting-data-room#0
댓글남기기