공식 문서Material Design(https://m2.material.io/components/sheets-bottom/androidBottomSheet는 이름 그대로 화면의 하단에서 나타나는 모달 UI이다. 기존의 내용에서 연관된 컨텐츠를 제공하거나 작업
위 사진 처럼 bottomSheet의 윗쪽 모서리가 둥글게 표현되어야 할 필요가 있었다.bg_white_radius_15dp배경이 될 drawable 파일을 하나 생성해 둔다.styles.xmltheme.xml어플리케이션 Theme에 추가BottomSheetDialog
ANR (Application Not Responding) > 안드로이드 앱의 UI 스레드가 너무 오래 차단되면 ANR 오류가 발생한다. 안드로이드의 Main스레드는 UI를 담당하는 스레드로 해당 스레드가 차단되면 UI업데이트를 처리하지 못해 사용자의 불만을 초래할
백그라운드에서 오래 실행되는 작업을 수행할 수 있는 어플리케이션 구성요소서비스는 안드로이드의 4대 컴포턴트 중 하나로 사용자에게 인터페이스를 제공하지 않으면서 작업을 수행할 수 있는 구성 요소이다. 액티비티와 비교해보면 화면에 직접보이는 화면은 액티비티 보이지 않고 뒤
뷰페이저를 사용하면서 currentItem을 변경하거나 화면을 스크롤 하는 것으로 다른 아이템으로 이동하는 경우에 사용할 수 있는 리스너이다. registerOnPageCHangeCallback을 통해 뷰페이저에 할당할 수 있다.사용자가 화면을 스크롤하거나 프로그래밍을
레트로핏은 안드로이드에서 서버와 REST API 통신을 위해 주로 사용되는 라이브러리이다. OkHttp를 기반으로 동작하며 높은 성능과 뛰어난 가독성, 쉬운 유지보수 등의 이유로 가장 많이 사용되는 통신 라이브러리이다.라이브러리의 특징과 사용법에 관해서는 나중에 따로
나는 항상 레트로핏을 사용한 API 통신 과정에서 다양한 에러(대표적으로 네트워크 에러)에 대해 어떻게 처리해야 할지 감이 잘 잡히지 않았다.지금까지는 단순히 앱이 터지지 않게 runCating으로 막아두는 방식으로 에러를 다루는 것을 피해 왔지만 이번에 프로젝트를 잠
새로운 프로젝트를 시작하면서 컴포즈와 함께 feature단위의 멀티모듈을 도입해 보기로 했다. 그리고 그 선택은 쉽지 않을 길이었다...우선 수많은 github의 코드를 참고하며 모듈의 구분 단위를 고민해 보았고 그 결과 우선적으로app, data, domaincor
버전 관리 > 관심사 분리와 재사용성등의 이유로 멀티모듈을 선택하였다면 필연적으로 build.gradle 파일이 많이 생기게 된다. 이것을 어떻게 다룰까...? buildSrc 사용 앞선 글에서 buildSrc를 사용한 것을 짧게 이야기 했었다. buildSrc를 사
Gradle Plugin이란? > 앞선 글에서 언급했든 우리는 안드로이드를 개발하면서 계속 plugin을 사용해 왔다. 이제는 이녀석이 뭘 해주고 있었는지 알아보자. 안드로이드의 Gradle Plugin은 쉽게 말해 Gradle의 작업(Task)들을 묶어둔 하나의 작