Kotlin
-
[Android/Compose] 고성능 UI 컴포넌트 만들기안드로이드 2024. 10. 23. 17:03
Compose에서는 Recomposition 단계를 생략하고도 UI를 변경할 수 있는 방법이 존재합니다. 이 글을 통해 Compose의 그리기 단계를 소개하려 합니다. 글의 구성은 퀴즈식으로 이루어져있고 퀴즈 이후에 곧바로 답을 작성해두었습니다.점진적으로 읽고 생각해보는 것을 권장합니다.⛳ 읽기 전에❌ Stable에 대해서 설명하지 않습니다.❌ Skippable에 대해서 설명하지 않습니다.❌ 모든 UI를 이렇게 만들 필요는 없습니다. ⭕ 신경써서 구현할 컴포넌트에 활용합니다.⭕ 애니메이션, 혹은 성능이 중요한 특수한 경우에 활용할 수 있습니다. ♻️ Recomposition최근에는 대부분의 Compose 개발자가 알고 있는 Recomposition을 간략하게 짚고 넘어가려 합니다. 그림에 나온 것 처럼..
-
[Android/Retrofit] 204 응답에 NPE 발생할 때 대처법안드로이드 2024. 2. 4. 16:40
Retrofit과 Coroutine을 함께 사용하던 중 204응답이 왔을 때 NPE가 발생하는 현상을 겪었습니다. 이를 위해 임시로 대응하는 코드를 작성하다가 제너럴하게 처리할 수 있는 코드를 구현했고 라이브러리까지 배포했습니다. 이 글에서 임시로 대응했던 방법을 소개하고 제가 직접 만든 라이브러리 링크를 소개합니다. 라이브러리를 사용하고 싶거나 github에서 보고 싶다면 https://github.com/sodp5/retrofit-unit-adapter 에서 확인해주세요! NPE가 언제 발생하는지 일반적으로 Retrofit을 사용하다가 마주하는 에러는 400, 500 번대의 응답의 에러입니다. 하지만 204 (no-content) 응답의 경우는 성공했어도 에러가 발생할 수 있습니다. 다음은 에러가 발..
-
[Kotlin] getter/setter 를 만들지 말자Kotlin 2022. 1. 23. 13:08
Kotlin의 var과 val은 프로퍼티기 때문에 getter와 setter를 포함하고 있다. 이것이 어떻게 동작되는지 Java로 Decompile 시켜서 확인해보자 Java decompile class Person { val gender = "male" var age = 3 } 위의 클래스를 Java로 변환시키면 public final class Person { @NotNull private final String gender = "male"; private int age = 3; @NotNull public final String getGender() { return this.gender; } public final int getAge() { return this.age; } public final ..
-
[Android/WebView] 안드로이드에서 WebView의 함수 호출하기안드로이드 2022. 1. 6. 15:31
WebView 설정 먼저 assets/web 폴더 안에 있는 index.html을 불러온다. val url = "file:///android_asset/web/index.html" binding.webView.loadUrl(url) 그 다음 웹페이지의 JavaScript 기능을 사용하기 위해 다음과 같은 설정 코드를 넣어준다. binding.webView.settings.javaScriptEnabled = true JavaScript 호출하기 기본적으로 JavaScript를 호출할 때에는 WebView.loadUrl(String) 함수를 이용하고 다음과 같은 형태로 사용한다. // 함수 호출 binding.webView.loadUrl("javascript:sum(1,2)") binding.webView...
-
Kotlin-DSL을 활용하여 Dependency 관리하기 - (2)안드로이드 2021. 5. 17. 02:19
Kotlin-DSL을 활용하여 Dependency 관리하기 - (1) Groovy를 활용해서 Dependency를 관리하는 방법은 흔히 알려져있고 자료도 많이 존재한다. Kotlin-DSL-Gradle을 설정하는 방법을 작성하고 이를 활용해서 Dependency를 관리하는 방법을 소개하려고 한다. 일 developer-munny.tistory.com 이전 포스팅에서 Kotlin-DSL Gradle 설정하는 법 까지 진행 했다. 이를 활용해서 Dependency를 관리 하는법을 알아보자 Kotlin-DSL을 활용하여 Dependency 관리하기 - (1) build.gradle.kts (:buildSrc) gradle 파일 외부에서 kotlin 언어의 기능을 사용하기 위해서는 먼저 buildSrc라는 디렉..
-
Kotlin-DSL을 활용하여 Dependency 관리하기 - (1)안드로이드 2021. 5. 16. 18:19
Groovy를 활용해서 Dependency를 관리하는 방법은 흔히 알려져있고 자료도 많이 존재합니다. Kotlin-DSL-Gradle을 설정하는 방법을 작성하고 이를 활용해서 Dependency를 관리하는 방법을 소개하려고 합니다. 일반적인 Groovy를 활용해서 Dependency를 관리하는 프로젝트 예시는 링크를 통해 확인할 수 있습니다. Kotlin-DSL을 활용하여 Dependency 관리하기 - (2) Kotlin-DSL 이란? Kotlin 기반의 Domain Specific Languages 으로 특정 목적에 맞게 작성되는 언어 방식을 말한다. data class Coffee( var been: String = "Arabica", var isWater: Boolean = false ) fun ..
-
[Android/Kotlin] Multi-ViewType을 사용하는 RecyclerView의 구조를 추상화 해보기안드로이드 2021. 4. 4. 00:14
수정일: 2021/5/12 - class 이름 변경 RecyclerView를 사용하다보면 하나의 아이템만 보여주는것이 아니라 다양한 형태의 아이템을 보여주고 싶을 때가 있습니다. 여러 타입의 아이템을 보여주는 데에는 여러가지 방법이 있겠지만 ViewType을 활용해서 아이템을 구분하고 이 로직을 나름대로 추상화 해보기로 했습니다. 목표는 viewType이 추가되더라도 Adapter를 수정하지 않는 구조를 만드는것입니다. ViewType을 활용한 아이템 분류 다음과 같이 viewType을 나누는 방법이 있습니다. class SampleAdapter : RecyclerView.Adapter() { private val itemList = ArrayList() override fun onCreateViewHo..