Android
-
[Android/Compose] 고성능 UI 컴포넌트 만들기안드로이드 2024. 10. 23. 17:03
Compose에서는 Recomposition 단계를 생략하고도 UI를 변경할 수 있는 방법이 존재합니다. 이 글을 통해 Compose의 그리기 단계를 소개하려 합니다. 글의 구성은 퀴즈식으로 이루어져있고 퀴즈 이후에 곧바로 답을 작성해두었습니다.점진적으로 읽고 생각해보는 것을 권장합니다.⛳ 읽기 전에❌ Stable에 대해서 설명하지 않습니다.❌ Skippable에 대해서 설명하지 않습니다.❌ 모든 UI를 이렇게 만들 필요는 없습니다. ⭕ 신경써서 구현할 컴포넌트에 활용합니다.⭕ 애니메이션, 혹은 성능이 중요한 특수한 경우에 활용할 수 있습니다. ♻️ Recomposition최근에는 대부분의 Compose 개발자가 알고 있는 Recomposition을 간략하게 짚고 넘어가려 합니다. 그림에 나온 것 처럼..
-
[Android/Foundation] 안드로이드에서 LineHeight 속성이 타 플랫폼과 다른 이유안드로이드 2024. 5. 6. 03:07
안드로이드 개발을 하다보면 디자이너가 전달준 텍스트 컴포넌트 스펙을 그대로 사용했는데도왠지 모르게 디자인이 묘하게 달라 보일 때가 있습니다.왼쪽은 기본 Text고 오른쪽은 이 글의 내용을 적용한 Text 입니다. 왼쪽의 문장에도 LineHeight를 적용했음에도 텍스트가 차지하는 높이가 왜 그대로인지이 글을 통해서 의문을 풀어주고자 합니다.LineHeight 란?LineHeight는 말 그대로 글자 크기와 관계 없이 이 문장이 차지할 높이를 얘기합니다.이렇게 하면 글자 크기와는 별개로 텍스트의 영역을 조절할 수 있게 됩니다. 시각적인 요소에 대해서는 견해가 없어서 정확히 LineHeight 수치를 어떻게 맞추는 지는잘 모르겠지만 아마도 문장이 너무 빽빽하게 보여지지 않게 하는 의도로 맞추지 않을까 싶습니..
-
[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) 응답의 경우는 성공했어도 에러가 발생할 수 있습니다. 다음은 에러가 발..
-
[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...
-
[Compose] Material ImageVector로 Icon 사용하기안드로이드 2021. 12. 27. 18:27
개인 프로젝트에 Compose를 활용하여 개발하던 중에 Material ImageVector를 활용해서 아이콘을 넣고 있었는데 어떤 아이콘들을 제공 해주는지 궁금해서 찾아보았고, 다른 분들도 쉽게 찾으면 좋겠어서 포스팅합니다. Material Icons 손쉽게 Material Design에서 제공해주는 Icon들로 상황에 맞게 Outlined, Filled, Rounded, Sharp, TwoTone 으로 사용할 수 있다. 제공해주는 아이콘 종류들은 아래 링크에서 확인할 수 있다. https://fonts.google.com/icons?selected=Material+Icons Google Fonts Making the web more beautiful, fast, and open through grea..
-
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..