본문 바로가기

반응형

전체 글

(54)
커스텀 debounce 를 만들자! 진행중인 프로젝트에서 사용자의 액션이 있을때마다 broadcast를 보내고, 마지막으로 받은 broadcast action으로 상태를 업데이트하는 기능이 필요하게 되었습니다. broadcast를 수신할때마다 업데이트를 하는 방법도 있겠지만, resume이 되었을때 마지막으로 받은 action만 업데이트하는 방식으로 개발해보기로 했습니다. 이를 위해서는 debounce가 딱이지만, 이를 broadcast receiver에 붙일수도 없으니.. 같은 기능을 하는 것을 만들어보기로 했습니다. 일단, debounce는 여러 입력을 약간의 딜레이로 기다렸다가, 입력이 없으면 전송하는 기능을 가지고 있습니다. 이와 비슷하게, 수신한 broadcast 를 가지고 있다가 resume이 되었을때 약간의 딜레이로 입력을 받..
RecyclerView Adapter 안에서 click().throttleFirst() 사용하는 방법 우리는 RecyclerView 리스트를 만들고 ViewHolder에서 click event를 사용합니다. 이때 중복 클릭을 막기위해서 throttleFirst()를 사용하는데, 이를 사용하기 위해서는 lifecycleScope가 필요합니다. 하지만, 단순히 ViewHolder의 init{} 에서 lifecycleScope 값을 얻을 수가 없습니다. init{} 은 초기화 단계로 아직 view가 attach가 안된 상태입니다. 그렇게 때문에 lifecycleScope값은 null인 상태인 것이죠. 여기까지 설명 드렸으면 감이 오시겠죠?!! 맞습니다. view가 attach가 된 이후에 lifecycleScope 값을 가져오면 됩니다. 그럼, 어떻게 attach가 된 후에 throttleFirst()를 호출..
손쉽게 Int, Float 를 dp로 변환하는 extension 코드 개발을 하다보면, 프로그램 코드상에서 dp값을 입력해야 할때가 있습니다. 필요한 부분에서 매번 코드를 길게 사용하는 것도 번거롭고, 코드가 생각이 안날때도 있다보니.. extension으로 만들어 두면 쉽게 사용이 가능합니다. inline val Int.dp: Int get() = TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, this.toFloat(), Resources.getSystem().displayMetrics ).toInt() inline val Float.dp: Float get() = TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, this, Resources.getSystem().di..
[Android + Kotlin] PagingDataAdapter에서 "좋아요"를 해보자. (payload update) 예전에 만들었던 PagingDataAdapter를 이용한 리스트 프로젝트에 아이템 업데이트 기능을 구현해보기로 하겠습니다. 예제로 "좋아요" 기능을 구현합니다. 이전에 작업했던 게시물은 아래 링크를 확인해주세요. Paging 3.0 + MVVM + Flow를 이용하여 리스트 구현하기 앱을 개발하면 빠지지않고 사용하는 페이징 리스트를 구현해 보도록 하겠습니다. 자동으로 페이징을 해주는 Paging 3.0 라이브러리를 이용하여 MVVM 모델과 Flow를 사용하여 연동할 예정입니다. 지 heeeju4lov.tistory.com 리스트의 아이템 업데이트를 위하여 payload 를 이용합니다. /** * Notify any registered observers that the item at position has..
[Android + Kotlin] Shimmer 라이브러리를 이용하여 로딩 화면 만들기 오늘은 페이스북의 Shimmer 라이브러리를 이용하여 리스트 로딩 화면을 만들어 보겠습니다. Shimmer 라이브러리는 위의 이미지와 같이 오른쪽에서 왼쪽으로 뭔가 흐르는 듯한 애니메이션을 쉽게 구현할 수 있도록 도와줍니다. Shimmer for Android About Shimmer is an Android library that provides an easy way to add a shimmer effect to any view in your Android app. It is useful as an unobtrusive loading indicator that was originally developed for Facebook Home. Watch Introductory Video Shimmer fo..
CollapsingToolbarLayout 을 이용하여 확장 / 축소되는 툴바 만들기 CollapsingToolbarLayout을 이용하여 확장/축소되는 툴바에 대해서 알아보겠습니다. 아래 애니메이션과 같이, 스크롤을 위로하면 일반 툴바로 변하고, 아래로 움직이면 확장된 툴바가 보이는 UI 입니다. 개발은 기존에 리스트 샘플로 개발했던 activiy에 추가 개발로 진행하겠습니다. Paging 3.0 + MVVM + Flow를 이용하여 리스트 구현하기 앱을 개발하면 빠지지않고 사용하는 페이징 리스트를 구현해 보도록 하겠습니다. 자동으로 페이징을 해주는 Paging 3.0 라이브러리를 이용하여 MVVM 모델과 Flow를 사용하여 연동할 예정입니다. 지 heeeju4lov.tistory.com 1. activity_lorempicsum_list.xml 파일에 확장/축소 툴바로 사용될 widge..
[Android + Kotlin] Android Studio에서 Release로 빌드하여 단말에 실행하기 가끔 개발 및 검증을 하다보면 release 버전으로 검토를 해야하는 경우가 있습니다. 이럴때 손쉽게 단말에서 release 버전을 확인하는 방법에 대해서 설명 드립니다. 1. 안드로이드스튜디오의 왼쪽 하단을 보시면 Build Variants 버튼이 있습니다. 이를 선택합니다. 2. 위쪽 프로젝트 창에 Build Variants 창이 열리게 됩니다. Active Build Variants 항목이 debug로 되어 있는 것을 release 로 변경해합니다. 3. build.gradle(Module 수준) 파일을 열어서 아래와 같이 추가합니다. ... android { ... signingConfigs { release { storeFile file('{release keystore 파일 경로}') stor..
[android + Kotlin] Runtime에 View 속성 확인 라이브러리 (for 디자이너 협업) 최근 앱 리뉴얼을 진행하면서, 디자인팀에서 실제 단말에서 디자인 확인을 하고싶다고 문의를 하였습니다. 어떤 방법이 좋을까 고민이 되었죠. 여기저기 기웃~기웃~ 거려보니.. 괜찮은 라이브러리가 눈에 들어왔습니다. 단말에서 앱 실행시에 View의 속성을 볼수 있는 라이브러리가 있더라구요. GitHub - willowtreeapps/Hyperion-Android: App Debugging & Inspection Tool for Android App Debugging & Inspection Tool for Android. Contribute to willowtreeapps/Hyperion-Android development by creating an account on GitHub. github.com 오호~ ..

반응형