[Background] 개발을 하던 중 디자인을 따르기 위해서 작은 버튼을 만들었는데 분명 나는 버튼 밖에 있는 공간을 클릭하고 있는데 버튼이 클릭되는 이상한(?) 현상을 발견해서 왜 이런 일이 일어나는지 한참을 조사해 봤습니다. 찾아본 결과 Android 내부에서 버튼, 스위치, 체크 박스 같이 클릭이 되는 Component의 클릭 사이즈를 일부로 키워서 개발자가 아무리 작게 만들어도 사용자가 쉽게 클릭할 수 있도록 제한을 걸어두고 있었다. 설정된 값은 48.dp x 48.dp로 생각보다 클릭이 가능한 범위가 매우 크다고 느껴서 이 제한을 풀 수 있는 방법을 찾아보게 되었다. [실제 코드] 한번 버튼을 권장 사이즈보다 작은 20.dp로 만들어보고 실제로 어느 정도가 클릭 범위인지 확인해 보겠습니다. B..
Android
[Background] 서버에서 엄청난 양의 데이터를 내려줘야 할 때 함께 번에 내려주지 않고 Paging을 이용해 요청할 때마다 일정량의 데이터를 내려줄 수 있다. Android에서는 Paging3 라이브러리를 사용해서 정말로 쉽게(?) 도입할 수 있는데 제가 느끼기에는 Paging Item을 직접적으로 Composable에 노출을 시켜줘야 하고 viewModel에서 이 Paging 데이터를 활용하기 불편하다는 점도 있어서 State 관리나 확장성에도 솔직히 구리다는 느낌을 받았습니다 그래서 한번 직접 도입을 해보겠습니다. [dependency] Compose Complier 1.5.4 Retrofit 2.9.0 gson 2.9.0 [적용하기] 데이터를 가져올 Api는 StackOverFlow Api를..
[Background] 제가 생각했을 때 모바일앱을 출시할 때 가장 큰 고민거리 중 한 개가 아무리 앱을 발전시켜도 사용자가 앱 업데이트를 쉽게 안 해준다는 점이라고 생각한다. 그래서 강제 업데이트를 도입해서 사용자에게 강제로 새로운 버전을 다운로드하게 하지만 너무 많이 남발하게 되면 오히려 UX를 해칠 수 있다. 그래서 이런 문제들을 해결하기 위해서 요즘 회사들에서 서버 주도 UI (Server driven UI)을 도입해서 사용자가 앱을 업데이트하든 말든 서버에서 손쉽게 UI를 변경할 수 있게 하고 있는 추세다. 그래서 한번 어떻게 도입하는지 맛보기를 해보겠습니다. 회사마다 하는 방식이 다를 거기 때문에 어떻게 도입할 수 있는지 감을 잡는 용도로 보시길 바랍니다. [버전] okHttp: 4.11.0 ..
[Background] 프로젝트를 하면서 중요한 정보를 로컬에 저장할 필요가 있을 때 Encypted Shared Preference을 사용하고자 했는데 이상하게 일부 디바이스에서 오류가 발생하는 에러 로그를 볼 수 있었습니다 그래서 이번 글에는 프로젝트에 적용할 수 있는 방법을 알아보고 문제 해결 방법을 알아보고자 합니다. 프로젝트는 Clean Architecture을 적용한 상태입니다. [적용하기] 먼저 필요한 dependencies을 적용합니다. dependencies { implementation("androidx.security:security-crypto-ktx:1.1.0-alpha06") } 그리고 저는 프로젝트에서는 Hilt을 이용해서 초기화를 해주었습니다. 모든 데이터에 암호화를 걸고 싶..