일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 깃헙
- studio
- 의존성주입
- error
- 유튜브
- Retrofit
- dart
- 에러
- 레트로핏
- 코루틴
- 웹뷰
- 안드로이드
- viewpager
- ADB
- build
- 안드로이드스튜디오
- coroutine
- Android
- Kotlin
- Github
- RecyclerView
- 안드로이드 스튜디오
- Gradle
- 코틀린
- 스튜디오
- 안스
- MVVM
- image
- GIT
- WebView
- Today
- Total
목록Kotlin (25)
코딩하는 일용직 노동자
const와 val은 모두 코틀린에서 상수를 선언하는 데 사용되는 키워드이지만, 값 할당 시점과 변경 가능성 측면에서 중요한 차이점을 가지고 있습니다. 1. 값 할당 시점: const: 컴파일 시점에 값 할당 컴파일 과정에서 상수 값이 직접 코드에 삽입됩니다. 런타임에서 값을 변경할 수 없습니다. 상수 선언은 반드시 파일의 최상단 또는 companion object 내에 있어야 합니다. 기본 자료형만 허용됩니다 (예: Int, String, Boolean, Double 등) val: 런타임 시점에 값 할당 변수 선언 시점에 값을 할당하거나, 후에 할당해야 합니다. 런타임에서 값을 변경할 수 없습니다. 상수 선언 위치에 제약이 없습니다. 모든 자료형 허용됩니다 (예: 객체, 함수, 배열 등) 2. 변경 가..
기본적인 Compose로 구현하는 화면은 상단에 statusBar가 있고 아래에 navigationBar가 있는 형태입니다. modifier에 statusBarsPadding() navigationBarsPadding()를 추가해서 상단과 하단의 영역을 제외한 나머지 영역을 사용하도록 합니다. 하지만 요즘은 이 영역을 모두 사용해서 더 이쁘게 앱을 만드는 추세입니다. Jetpack Compose에서 전체화면을 사용해 컨텐츠를 표시하는 방법을 알아보겠습니다. 코드를 통해 확인해봅시다. @SuppressLint("UnusedMaterial3ScaffoldPaddingParameter") @Composable fun MyScreen() { Scaffold { Column( modifier = Modifier ..
안드로이드 의존성주입에 Koin을 사용할때 Activity 와 그 아래 속한 하나 이상의 Fragment 에서 같은 ViewModel 을 사용할 필요가 있는 경우가 있습니다. 기존에는 by sharedViewModel() 을 이용하면 됐는데 이것이 deprecated 되었습니다. 이제는 by activityViewModel() 을 이용하도록 변경되었습니다. val weatherAppModule = module { // WeatherViewModel declaration for Weather View components viewModel { WeatherViewModel(get(), get()) } } class WeatherActivity : AppCompatActivity() { /* * Declare..
#의존성과 의존성주입(Dependency Injection, DI)이란? class Animal 이 있고, class Cat이 있습니다. 그리고 Cat 에서 Animal 객체를 생성했습니다. class Animal { ... } class Cat { val animal = Animal() } 코드에서처럼 Cat 이 Animal을 멤버로 갖고 있으므로 Cat 은 Animal에 강한 의존성을 가진 관계가 됩니다. class Cat(private val animal: Animal) { ... } fun main() { val animal = Animal() val cat = Cat(animal) } 이번에는 생성자를 통해 Animal객체를 주입해주었습니다. 이로써 클래스간의 관계를 더 약하게 만들 수 있습니다..
아주 기초적인 Retrofit2 사용법을 https://jsonplaceholder.typicode.com/posts 를 이용해 테스트해보는 방법을 알아보겠습니다. #기본 셋팅 Retrofit2를 사용하기 위해 gradle에 의존성 주입을 해줍니다. Manifest 파일에 인터넷 퍼미션을 추가해줍니다. // 의존성 추가 implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' Manifest파일에 네트워크 기능을 이용하기 위한 퍼미션을 추가해줍니다. #RetrofitClient.kt BaseUrl 과 json 처리를 위한 GsonConverterFactor..
안드로이드에서 주로 Retrofit2 를 이용해 네트워크를 구현하게 됩니다. 이때, API의 호출결과로 정상적이라면 200이 내려올것이고, 정상적이지 않다면 400, 404, 406, 500 등 다양한 Response가 올 수 있습니다. Response 처리를 도와주는 라이브러리가 있어서 소개합니다. Sandwich는 Retrofit Response를 모델링하고 예외를 처리하기 위한 API 라이브러리입니다. https://github.com/skydoves/sandwich GitHub - skydoves/sandwich: 🥪 A lightweight sealed API library for modeling Retrofit responses and handling exceptions. 🥪 A lightwe..
※ 추가 안내 안드로이드 초기부터 xml 파일의 뷰들과 연결하기 위해 findViewById를 해왔습니다만 매우 불편했습니다. kotlin-android-extensions 덕분에 findViewById를 하지 않는 편리함이 있었습니다. 하지만 서로다른 xml 파일에서 동일한 id를 사용할 경우가 많기 때문에 kotlin-android-extensions를 사용할 경우 코드가 헷갈릴 수 있었습니다. 때문에 구글에서는 안드로이드 스튜디오 4.1 버전부터 kotlin-android-extensions의 지원을 중단하고 ViewBinding 을사용하도록 안내하고 있습니다. 안드로이드 스튜디오 4.1 업데이트 후 kotlin-android-extensions를 수동으로 추가해야하는 번거로움이 생겼습니다. 우선..
2018년 구글은 Android Jetpack을 공개했습니다. Jetpack 은 더욱 쉽고 빠르게 앱을 만들 수 있도록 도와주는 도구를 모아 놓은 라이브러리입니다. 또한, 이 시기 주변의 안드로이드 개발자들 사이에서도 코틀린을 이용한 개발이 급증하기 시작했고 저도 부랴부랴 코틀린을 공부했던 기억이 있습니다. 구글은 Jetpack을 공개하면서 개발자들이 고품질 애플리케이션을 더 쉽게 만들 수 있도록 했습니다. 하지만 제대로 해결하지 못한 영역이 UI였습니다. Jetpack Compose는 바로 이 UI영역을 획기적으로 개선하기 위해 만들어지는 것입니다. 지금의 안드로이드 UI는 xml로 레이아웃과 뷰들을 만들어 배치하고 소스에서 뷰들의 id를 바인딩하여 이벤트를 붙이고 사용하는 방식이었습니다. 하지만 Je..
기존 안드로이드 로컬 데이타베이스를 사용할땐 SQLite를 이용했습니다. 하지만 사용방법이 매우 불편하기 때문에 ORMLite 나 greenDAO 같은 별도의 ORM(Object-relational mapping)을 이용하거나 Realm을 이용합니다. Room은 SQLite를 편리하게 사용하도록 구글이 공식적으로 내놓은 ORM이라고 생각하시면 됩니다. (왜 이걸 이제야 내놓는지... 만들어줄거면 진작에 나왔어야 하는거 아닌가 싶으ㄴ... -_-;;) 이번 포스팅에선 Room을 어떻게 사용하는지 기초적인 방법을 확인해보겠습니다. #1. Room의 기본구성요소 Entity : 데이타베이스의 테이블 이라고 생각하면 됩니다. DAO(Data Access Object) : 데이타베이스를 조작하는 함수들을 여기서 ..
리사이클러뷰를 구현하기 위해 어댑터를 만드는 과정은 다소 귀찮거나 복잡하다고 느낍니다. 특히나 뷰타입을 다르게 꾸며줘야 할때는 더더욱... Kotlin 환경에서 리사이클러뷰 어댑터를 쉽고 빠르고 편리하게 사용할 수 있게 도와주는 라이브러리가 나왔습니다. https://github.com/ibrahimyilmaz/kiel ibrahimyilmaz/kiel Kotlin way of building RecyclerView Adapter 🧩. You do not have to write RecyclerView Adapters again and again and suffer from handling of different view types. Kiel will help you. - ibrahimyilmaz/kie..