본문 바로가기

Android

(7)
Compose Tutorial : 기본 레이아웃 Compose Tutorial 6 Compose의 기본 레이아웃 | Android Developers 이 Codelab에서는 Compose에서 즉시 제공되는 컴포저블과 수정자를 통해 실제 디자인을 구현하는 방법을 알아봅니다. developer.android.com 슬롯 기반 레이아웃 슬롯 기반 레이아웃은 개발자가 원하는 대로 채울 수 있도록 UI에 빈 공간을 남겨 둡니다. 컴포즈 UI 재사용성을 위한 레이아웃 방식으로 이 방식을 활용하는 대표적인 예는 TopAppBar, Scaffold 등이 있다. 특정 영역을 추상화하여 사용하는 곳에서 해당 부분을 채우도록 레이아웃을 구성할 수 있다. 추상화 영역을 컴포저블 람다 타입(content: @Composable () -> Unit)으로 받으면 된다. 컴포즈가..
🐘 Groovy 에서 KTS로 전환하기 🐘 목표 gradle 관리 언어 Groovy -> kts로 바꾸기 🐘 Gradle 안드로이드 프로젝트에선 다양한 오픈 소스 라이브러리들을 활용할 수 있다는 게 장점입니다. 프로젝트에서 사용하는 많은 라이브러리를 관리하기 위한 도구가 필요한데, Android Studio에서는 그 도구로 Gradle을 사용합니다. Gradle은 JVM에서 동작하는 빌드 자동화 시스템으로, 라이브러리 관리 뿐 아니라 컴파일, 테스트, 패키징 등의 빌드 작업을 자동화하는 역할을 합니다. 기존에 존재하던 Ant, Maven에 비해 간결하게 작성할 수 있으며 속도가 빠르다는 것이 장점입니다. 🐘 Groovy vs KTS Gradle은 자바와 비슷한 Groovy 언어로 작성하였는데, 이제는 KTS(코틀린 스크립트)로 이를 대체할 수..
Compose로 RecyclerView 대체해보기 안드로이드에서 반복되는 뷰를 구현하기 위해서는 RecyclerView를 사용합니다. 이를 사용하기 위해서는 RecyclerViewAdapter, ViewHolder 등 관련된 부수적인 것들을 구현해야 했습니다. 그런데 RecyclerView가 아주 많이 활용하는 뷰이다 보니 관련 코드 양도 그만큼 많아지는 문제가 있었습니다. 이제는 RecyclerView 대신 Compose를 사용하면 반복되는 뷰를 간단하게 구현할 수 있다고 합니다. 얼마나 쉽게 이런 뷰를 구현할 수 있는지 Compose 공부도 할 겸, 마인드가든의 복잡한 코드를 개선해 보겠습니다. 글을 읽기 전 - 공부를 하며 작성 중이라 글 중간에 나오는 코드는 최종 결과물이 아닐 가능성이 높습니다. 최종 코드는 깃헙을 참고해 주세요 - 마인드가든에..
Hilt 사용 배경 이번 프로젝트에 DI를 적용해 보려고 Hilt 라이브러리에 대해 공부하게 되었다. * DI 적용 이유 : 모듈 간 결합도 낮추기 -> 코드 재사용성 증가, 리팩토링 & 테스트 용이 DI를 적용할 수 있는 방법은 여러 가지가 있다. 1) 수동으로 적용, 2) Dagger같은 DI 프레임워크의 도움을 받기 수동으로 적용하면 여러 종속성 흐름들을 개발자가 직접 관리해야 해서 코드가 복잡해진다. 그래서 프레임워크의 힘을 빌리고자 Dagger를 적용하려고 찾아봤더니, google에서 Dagger를 편하게 쓰라고 내준 라이브러리가 있었다. Dagger는 적용 시 학습 곡선이 가파르고 보일러 플레이트 코드도 꽤 발생해서 사용에 불편함이 있었기 때문에 안드로이드용 DI 라이브러리에 대한 수요가 꽤 있었던 것..
[Android] Very Long Vector Path issue SVG 를 Vector Drawable로 변환을 했는데 path가 너무 길다는 lint error가 나왔다. 이곳에 들어가서 왼쪽 이미지처럼 precision을 1로 만들어 준 후 이미지를 다운 받는다. svg를 vector drawable로 변환 후에도 lint error가 나온다면, 다음 단계를 진행한다. 터미널로 가서 npm을 통해 avocado를 설치한다. npm install -g avocado 설치가 완료되었다면 avocado file_name.xml -o file_name.xml 성공적으로 됐을 경우 터미널에서 이런 메세지를 볼 수 있다. file_name.xml: Done in 32 ms! 4.792 Kb - 18.6% = 3.902 Kb 참고 “Very Long Vector Path” i..
Vector Asset Android는 매우 다양한 크기의 기기들이 존재하기 때문에 화면 사이즈에 대응하기 위해 mdpi, hdip 등 다양한 dpi resource를 관리해야 했다. 이렇게 하지 않을 경우 확대 시 이미지가 깨지는 현상이 발생할 수도 있는데, 이건 이미지를 나타내는 방식이 Raster 이기 때문이다. Raster 형식 이미지는 특정 해상도에서 정의되어 각 픽셀의 색상 정보만 알고 있기 때문에 확대를 할 경우 누락된 픽셀이 생겨 이미지가 위처럼 깨져 보일 수 있다. 이에 대응하기 위한 방식이 Vector 다. vector는 점과 점을 연결해 수학적 원리로 이미지를 표현하는 방식이기 때문에 크기를 늘리거나 줄여도 이미지에 손상이 없다. 그렇기 때문에 래스터 방식에 비해 기존 dpi 별로 이미지를 가지고 있을 필요..
[Android UI] Drag & Drop Recyclerview -> Recyclerview Drag & Drop 구현하기 화면 구성 Top Recyclerview Bottom Recyclerview 동작 Bottom Recyclerview에 있는 정보를 Drag and Drop을 통해 Top Recyclerview로 전달 들어가기 전 준비물 Recyclerview 두 개 더보기 1. activity.xml 2. recyclerview_item.xml 3. Activity recyclerview 두 개를 생성해준다. item layout은 귀찮으니까 하나로 간다. 간격을 위해 recyclerview LayoutManager에 ItemDecoration을 추가해주었다. Adapter 어댑터 아이템은 간단하게 textView 데이터 설정용 stri..