본문 바로가기

분류 전체보기

(149)
[Compose] SwipeToDismiss를 사용하여 스와이프 이벤트를 추가해보자. 필자가 업무를 진행하다 iOS에서는 익숙하지만 Android에서는 그렇게 익숙하지 않은 제스처 이벤트인 Swipe 하여 Item의 데이터를 변경하는 방법에 대하여 찾아보게 되었다.빠르게 확인하고 적용해본 결과 서비스에 해당 기능은 추가하지 않았지만 작성해 두면 생각보다 사용할만한 곳들이 많이 생길 것 같아서 예제를 만들어보기로 했다. 이번 예제는 Compose에서 제공해주는 SwipeToDismiss Component를 사용하여 해당 이벤트를 구현하였으며, 실무에서 사용할 때 사용할법한 이벤트를 추가하여 구현하였다.우선, 위에서 언급한대로 SwipeToDismiss Component부터 확인해 보자.fun SwipeToDismiss( state: DismissState, modifier: Mo..
[Compose] 다양한 방법으로 Drawer를 구현해보자 - Scaffold, ModalDrawer 최근 업무를 진행하다, 카카오톡에서 보이는 채팅방 서랍 같은 메뉴를 만들어야 했다. 기존에 Compose Sample을 만들 때 해당 UI인 Drawer를 구현해 보았지만, 좌우가 반대이기도 하고 다른 방식을 사용할 수 있었기 때문에 BottomSheet와 마찬가지로 2가지 방법으로 해당 UI를 구현해보고자 한다. 제목에 기술한 Scaffold와 ModalDrawer 말고도 Custom 해서 비슷한 UI를 구현할 수 있지만, 이번에는 해당 케이스는 제외하고 Compose에서 Component로 제공해 주는 2가지 방식만 작성하겠다. 우선 처음으로는 가장 기본적인 Scaffold를 사용하여 구현하는 방법이다. @Composable fun Scaffold( modifier: Modifier = Modifie..
[Android] Android 14 (SDK 34) 버전을 targetSDK로 사용할 때 주의할 점 몇가지 필자가 회사에서 앱을 업데이트하는데, target SDK version을 34로 올렸을 때 발생했던 문제에 대해 간략하게 작성해두고자 한다. 런타임시에만 에러가 발생하는 케이스도 존재하기 때문에, 코드로 수정한 후에 직접 실행하여 모든 경우를 체크해 보는 것이 좋다는 것을 미리 언급하고 글을 작성하도록 하겠다. 해당 버전을 targetSDK로 사용하게 되었을 때 변경이 이루어지는 부분은 공식 문서를 보면 알겠지만 상당히 많다. 하지만 이러한 문제들은 고려하면서 작업하면 되지만, 필자가 아래에 작성할 몇 가지는 심사 제출을 시도하지 않으면 알 수 없는 부분이 존재하므로 간략하게나마 작성하고자 한다. 부디 이 글을 보는 개발자분들은 앱이 죽는 문제가 있는데 심사가 딜레이되어 똥줄 타는 일이 없길 바란다. 우..
[Compose] 다양한 방법으로 BottomSheet를 구현해보자. - BottomSheetScaffold, ModalBottomSheet, CustomBottomSheet Compose 환경에서 개발을 진행하다 보니, BottomSheet Component를 사용하는 경우가 상당히 많다. 특정 버튼 및 아이템을 눌렀을 때, 페이지보다 가볍게 해당 아이템에 대한 디테일한 정보 혹은 다음 Depth의 정보를 보여주기 위해 많이 사용한다. UX 관점에서 생각했을 때 BottomSheet를 사용하는 다양한 이유가 존재하겠지만, 정말 단순하고 직관적으로 위와 같은 이유로 모바일 환경에서 많이 사용한다고 느낀다. 그리고 그 자주 사용하는 BottomSheet를 구현하는 것에 있어서 다양한 방법이 존재했고, 필요에 따라서 선택해서 구현하기 위해 조금 더 디테일하게 공부하고 정리하기 위해 이 글을 작성하게 되었다. 글의 제목으로 작성했듯이 필자는 이 3가지 방법으로 BottomSheet..
[Android] 정책 변경 후 구글 플레이스토어 개발자 계정 생성부터 신규 앱 배포까지 과정 정리 - 2주간 테스터 20명 유지하기 구글 플레이 콘솔 정책 변경에 따라, 23년 11월 13일 이후 개발자 계정을 만든 개발자는 특정 테스트 요구사항을 충족해야 Google play에 앱을 게시할 수 있도록 변경되었다. 필자는 앱 개발을 19년도부터 진행했지만, 개발자 계정을 만들고 배포하기까지의 과정이 간단했기 때문에 별다른 생각을 하지 않고 필요하면 그때 개발자 계정을 만들어서 사용해야겠다고 생각했다. 하지만 이렇게 신규 개발자 계정에 대한 정책이 바뀌고 나서, 한번 찾아보니 여간 귀찮은 프로세스가 아닌지라 정책이 바뀌고 나면 미리 만들어서 프로세스를 진행시켜 둬야겠다고 생각했다. 따라서, 이번 글에는 간단하게 앱을 만들어서 그 앱을 배포하기 까지의 과정을 간단하게, 신규 개발자가 궁금할만한 것들만 작성해보고자 한다. 우선, 개발자 계..
[Compose] LazyList에서 스크롤을 커스텀하기 위해 FlingBehavior를 사용해보자. 필자가 실무를 진행하다, LazyColumn의 스크롤 애니메이션을 직접 커스텀해야 하는 이슈가 발생했다. 지금까지 LazyColumn을 사용할 때는 많은 양의 item List를 보여줄 때 사용하는 케이스가 많아서, 직접 애니메이션에 대해서 커스텀을 하기보다는 그냥 사용자가 스크롤하는 대로 보여주면 됐다. 따라서, 스크롤에 대해서 별도로 건들지 않고 필요 시 State만 컨트롤해 주는 정도로 사용했다. 하지만 이번에 직접 스크롤을 커스텀하다보니 생각보다 자료도 많이 없었고, 검색하기 위한 키워드를 찾는 것조차 생각보다 시간이 오래 걸렸다. 따라서, 이번 글에서는 그렇게 깊지는 않지만 간단하게 스크롤을 커스텀할 수 있는 코드를 설명하고자 한다. 우선, 기본적으로 LazyColumn을 사용하면 다음과 같이 ..
[Compose] Compose 환경에서 Circular Scroll Pager와 다른 UI를 가지는 Pager를 구현해보자. Compose 환경에서는 Pager를 아주 쉽게 구현을 할 수 있다. 하지만, 실무에서 적용하기 위해서는 Pager를 구현하기만 하면 되는 것이 아니라 몇 가지 기본적인 기능을 추가해야 사용이 가능하다. 따라서, 몇 가지 기본적인 기능 중 가장 많이 사용이 되는 두 가지 기능에 대해서 설명하고자 한다. 첫 번째는 Circular Scroll이 가능한 Pager처럼 보이도록, 첫 번째, 마지막 index에서 좌 우로 이동하려고 했을 때 각각 마지막, 첫 번째 index의 아이템을 보여주는 방법이고 두 번째는 Pager로 화면을 스크롤할 때 각각 다른 Compose UI를 보여주도록 설정하는 방법이다. 다양한 방법으로 2가지를 모두 구현할 수 있는데 필자가 적용한 방법은 비교적 간단한 방법이라고 생각되며, ..
[Compose] Compose 환경에서 Pull To Refresh를 구현해보자. 예전에 업무를 진행하다 위에서 아래로 잡아 당기면서 화면을 갱신하는 pull to refresh를 xml 환경에서 구현해 본 경험이 있다. 하지만 이번에는 Compose 환경이다보니 어떻게 해야 하나 잠깐 찾아보았는데, 이처럼 해당 기능 자체를 제공해주고 있었다. 이번 글에서는 해당 기능을 사용하여 아주 간단하게 Pull to Refresh 기능을 구현해보고자 한다. 우선, 해당 기능은 Material에서 제공하기 때문에 해당 dependency를 추가해 준다. implementation "androidx.compose.material:material:$material_version" 다음으로는, pull to refresh를 수행하기 위한 값을 선언해 줘야 하는데, 맨 위에 pullRefresh 함수를..