본문 바로가기

ANDROID/Jetpack

(5)
[Android/Jetpack Compose] 컴포즈에서 터치 이벤트를 처리할 때의 유의점 Jetpack Compose 아이템의 더블탭 이벤트에 따라 애니메이션을 수행하는 개발을 진행중에 있었다. 이벤트 처리도 손쉽게 Modifier로 마무리 됐구나 생각한 찰나, 애니메이션이 의도대로 재생되지 않았고 긴 추적 끝에 터치 이벤트를 통해 전달된 대상 state가 재생을 필요하는 UI의 state와 일치하지 않는 것을 확인했다. 아래는 doubleTap 제스처를 트래킹하는 Android Developers page 스니펫인데, pointerInput의 parameter를 Unit으로 운영하는 걸 확인할 수 있다. var zoomed by remember { mutableStateOf(false) } var zoomOffset by remember { mutableStateOf(Offset.Zero)..
[Android/Jetpack Compose] Spannable string 처리하기 기존의 xml 베이스의 레이아웃을 Jetpack compose로 전환하면서 특정 부분의 텍스트에 스타일과 클릭 이벤트를 줘야 하는 Spannable 처리가 필요했다. Spannable 처리를 통해 부분적으로 string 스타일을 바꿀 수 있을 뿐더러, 클릭시 url 오픈 등의 가이드 액션도 적용할 수 있다. 이를 위해서 사용한 API는 AnnotatedString이다. 누군가는 string을 각각 append하는 방식으로 spannable 처리를 하기도 했는데, 다국어 및 리소스 관리에서 불편함이 많을 것 같아서, 일단 기본 문장을 넣어놓고, spannable 처리를 하고자 하는 단어들을 별도로 선별해 스타일 및 클릭 이벤트를 처리하도록 적용했다. 1. AnnotatedString을 만드는 Composa..
[Jetpack/Compose] Compose 핵심 정리 요즘 세상 핫한 Jetpack Compose의 코드 랩을 마치면서, 내가 느낀 키포인트 네가지에 대해 정리하고 넘어가고자 한다! 1. Declaritive UI 이전의 명령형 UI(Imperative UI)가 현재 구성되어 그려진 View의 상태에 의존적이었다면, 선언형 UI는 현재 View 상태에 대한 의존 없이 철저하게 View를 구성하는 데 사용한 데이터에 기반해 화면을 그린다. 더 쉽게 말하자면, 선언형 UI는 UI를 그리는 순간에 대해서만 정의할 뿐, 그려진 UI에 대해서는 생각하지 않는다. 보이는 화면을 바꾸고 싶다면, 보이는 화면이 아닌 보이는 화면을 그린 방법을 살피는 것이다. (이는 Recomposition을 이해하면 더 쉽게 이해될 것이다.) 이전에 MVVM 등의 아키텍처 구조에 익숙하..
[안드로이드] 안드로이드 스튜디오 3.6 업데이트, ViewBinding 사용해보기 이번 2월 25일에 안드로이드 스튜디오 버전 3.6이 릴리즈 되면서, 안드로이드 스튜디오의 자잘한 UI/UX 변화와 함께 다양한 기능들이 추가되었다. 이번에 추가된 기능들 중에 먼저 눈에 들어왔던 뷰바인딩을 적용해 본 경험을 공유하고자 한다. https://developer.android.com/topic/libraries/view-binding?utm_medium=studio-assistant-stable&utm_source=android-studio-3-6 뷰 바인딩 | Android 개발자 | Android Developers 뷰 바인딩 기능을 사용하면 뷰와 상호작용하는 코드를 쉽게 작성할 수 있습니다. 모듈에서 사용 설정된 뷰 바인딩은 모듈에 있는 각 XML 레이아웃 파일의 바인딩 클래스를 생성합..
[안드로이드 | Jetpack] 안드로이드 Navigation 구현하기 Jetpack 컴포넌트 중 가장 궁금하다 싶던 요소였던 Navigation을 간단히 구현을 해 보았다. 항상 그랬듯이 단계부터 우선적으로 나열해보고, 차례대로 정리를 해 보겠다. 구현하고자 한 바는 정말 간단하게 Navigation 컴포넌트를 추가하고, Splash 화면에서 메인 화면으로 넘어갈 수 있게 만드는 것이었다. 우선 Jepack 네비게이션의 취지가 무엇이냐함은 아래 영상을 참조하는 것이 좋겠다. 단순하게 이해하기로 Navigation의 취지라 하면 기존 여러개의 액티비티로 이루어져 intent등을 통해 데이터를 주고받거나, 액티비티간의 이동간 생명주기를 신경써야하던 부분이 있었는데 이를 단일 액티비티 + ViewModel 구조를 통해서 화면전환 및 데이터 송수신 문제를 해결할 수 있는, 앱의 ..