본문 바로가기

전체 글

(92)
[Jetpack Compose] Clickable 이 외의 Ripple Effect 없애기 동기 네이버 부스트캠프 마지막 프로젝트 진행 중, BottomNavigation 의 Ripple 이펙트를 없애는 게 좋을 것 같아 이를 제거해달라고 동료분께 부탁드렸습니다. Clickable { } 이라고 생각을 해서 부탁드렸던 건데, 해당 Composable 을 보니 Clickable 속성이 아닌 다른 방식으로 터치를 받았습니다. 포스트 제목이 Clickable 이 외의 Ripple Effect 없애기 인 이유는, Clickable { } 일 때의 Ripple Effect 를 없애는 것에 대해서는 일전에 작성한 포스트가 있기 때문입니다. [Jetpack Compose] Clickable Ripple Effect 없애기 Android, iOS 등 모바일에서는 버튼이 눌렸다는 사실을 유저에게 알리기위해 R..
[Jetpack Compose] CompositionLocal 은 어떻게 동작하는가? 동기 Jetpack Compose 를 꽤 오랜 시간 사용해 왔지만, 여전히 모르는 부분이 많습니다. 그중 가장 가려웠던 부분은 CompositionLocal 인데, 언제 어떻게 사용해야 하는지에 대해서는 알고 있으나, 어떠한 과정으로 적용되는지에 대해 자세히 모르고 있어 포스팅하게 되었습니다. 두 개의 Composable @Composable @OptIn(InternalComposeApi::class) fun CompositionLocalProvider(vararg values: ProvidedValue, content: @Composable () -> Unit) { currentComposer.startProviders(values) content() currentComposer.endProviders..
Glide 와 Coil 은 각각 어떻게 이미지를 불러오는가? 동기 수많은 안드로이드 이미지 처리 라이브러리가 있습니다. 그 중 가장 선호되는 것은 당연히 Glide 와 Coil 일 겁니다. Fresco, Picasso 등이 있지만, 현재는 그다지 많이 사용되진 않는 것 같아요. 프로젝트를 위해 기술 논의를 하던 중, Glide 와 Coil 을 두고 깊이 고민하였습니다. 결국엔 Coil 을 선택하였고요. 가장 주된 이유는 Jetpack Compose 와 통합이 잘 되기 때문이었습니다. (Glide 를 이용하면 작은 처리에도 더욱 많은 코드가 필요합니다.) Glide 와 Coil 에 대해 비교한 포스트는 작성해두었으니, 참고하시면 되겠습니다. [Jetpack Compose] Glide 와 Coil, 무엇을 사용하면 좋을까. 이미지 처리 라이브러리 개발시, 저는 UI에..
VersionCatalog 적용기 동기 현재 진행 중인 네이버 부스트캠프의 학습 스프린트 기간이 종료되고 본격적으로 그룹 프로젝트 개발에 착수했습니다. CleanArchitecture 기반의 앱 서비스를 만들기 위해 모듈화를 진행했습니다. 문득 제가 개발자로 있는 프로젝트 팀의 동료분께서 VersionCatalog 적용에 대한 의사를 여러 번 표하셨던 것이 생각 나, 이번 기회에 먼저 적용해보았습니다. VersionCatalog VersionCatalog 는 의존성 선언 시 선택할 수 있는 방법 중 하나입니다. 기존 방식의 문제점 우리에게 친근한 기존의 방식은 단일 모듈 프로젝트 생성 시 사용이 간편합니다. 별도로 파일을 추가할 필요 없이, 생성되는 모듈 수준의 build.gradle 에 필요한 의존성을 추가하면 됩니다. 그러나, 프로젝..
뮤런 - 당신의 러닝 메이트 GitHub - jangjh123/murun-android Contribute to jangjh123/murun-android development by creating an account on GitHub. github.com 앱 은 러너들을 위한 앱입니다! 러너의 케이던스를 측정하거나, 직접 설정한 케이던스에 맞는 BPM 의 NCS(No Copyright Sound) 를 재생합니다. ExoPlayer 를 사용하였기 때문에 Notification 으로도 플레이어를 제어할 수 있습니다. 🛒 Download 뮤런 - 당신의 러닝 뮤직 - Google Play 앱 러닝 케이던스에 맞는 음악을 재생해주는 앱입니다. play.google.com 📷 ScreenShots 💻 Language 100% Kotlin ..
Effective Kotlin, 좋았던 부분들. 동기 요 며칠 간 마르친 모스칼라의 저서 을 집중적으로 읽었습니다. 언어에 대한 이해도를 높이고 싶었기 때문입니다. 언어에 대한 이해도가 높아지면 보다 가독성이 높고 간결한 코드를 작성할 수 있게 되니까요. 물론 정리를 하지 않은 것은 아닙니다. 책을 읽으면서 옵시디언에 별도로 정리를 해뒀는데, 사실 다시 보게 되지는 않더라고요. 그래서 이번 기회에, 정말 중요하다 싶었던 내용들에 대해서 다시 한 번 정리하기 위해 포스팅합니다. 어떤 책이었나? 개인적으로는 좋은 내용들이 굉장히 많았습니다. '이런 것도 된다고?' 싶을 정도로 신기한 부분도 있었고, 평소에 꽤 당연하게 여기는 부분들에도 깊은 수준의 이해를 위한 설명이 포함되어 있기도 했습니다. 다만, 코틀린을 처음 접하는 이들에게 추천할만한 서적은 아닌 ..
Activity Lifecycle 의 각 콜백 메서드에서는 어떤 처리를 하는가? 동기 최근 면접 준비를 위해 안드로이드 지식에 대해 다시금 탐구하고 있습니다. 가장 최초로 탐구하려고 했던 주제는 Activity Lifecycle 입니다. 물론 어떠한 순서로 호출이 되고, 특정한 상황에는 또 어떻게 호출되는지에 대해서도 알고 있지만, 호출 되는 시점에 어떠한 일이 발생하는지, 화면은 언제 보여지고 또 언제 숨겨지는지, 숨겨지는 것과 별개로 또 언제 제거되는지 등에 대해서는 잘 모르고 있어 학습하고 포스팅하게 되었습니다. 상속 구조 Activity 는 기본적으로 위와 같은 구조를 지닙니다. 이후 AppCompatActivity 의 하위 타입인지, 아니면 ComponentActivity 의 하위 타입인지에 따라 다르긴 합니다만, 일단 Activity 부터는 기본적으로 같습니다. 그럼, 차..
LayoutInflater 가 xml 을 객체화 하는 과정 동기 네이버 부스트캠프 멤버십 과정에 참여 중인데, xml 기반으로 UI 를 작성하라는 요구 사항이 있어 오래간만에 xml 관련 코드를 잔뜩 작성하고 있습니다. 다만, 최근에 Jetpack Compose 에서의 렌더링에 대해 공부하고 있다 보니, xml 은 어떻게 UI 가 될까? 라는 궁금증이 생겼고, 이를 해결하기 위해 LayoutInflater 를 찾아가보기로 했습니다. LayoutInflater Layout 은 알겠는데, Inflate 라는 단어는 다소 생소해서 찾아봤는데, Inflate 는 '부풀리다'를 의미합니다. xml 에 작성된 코드를 바탕으로 UI 를 그려내니, 부풀리다는 의미가 썩 어울리는 것 같습니다. LayoutInflater 에 작성된 주석에는 해당 클래스의 역할과 생성 등에 관해 ..