문제 상황 ViewModel에서 서버에 요청을 보낸 후 받아온 응답을 State에 반영하였을 때,Recomposition은 발생하는데 UI에는 데이터가 표시되지 않는 이슈가 있었습니다. MainActivity.kt먼저 MainScreen에선 아래와 같이 LazyColumn 내에 여러 레이아웃이 item으로 들어가는 구조입니다.Mutli ViewType RecycleView 처럼 구성 되어있습니다.@Composablefun MainScreen(state: MainState) { Log.d("MainScreen", "Top chart list: ${state.topChartList}") Scaffold( containerColor = WePLiTheme.color.black, ..
1. Scope 지정 확장 함수핵심 로직과 부가 기능을 분리하자는 AOP(관점 지향 프로그래밍) 개념에서 떠올린 확장 함수입니다 기존의 View에서 Scope를 열어 사용할 때 불필요한 Depth가 생기게 됩니다.의미만 잘 전달된다면 핵심 로직과 분리 되어도 상관 없는 구문이라 생각하여 아래와 같이 정의 해보았습니다.fun LifecycleOwner.withInMainScope( coroutineContext: CoroutineContext = EmptyCoroutineContext, start: CoroutineStart = CoroutineStart.DEFAULT, action: suspend () -> Unit) { lifecycleScope.launch( cont..
이전 글 [ 안드로이드 ] 앱 내에 개발자 모드 추가하기개발자 모드가 필요한 이유 개발자 모드를 통해서 서버 모드(상용, QA, Test)를 앱 내에서 변경할 수도 있고, 에러 발생 시 로그를 기록해줄 수도 있습니다. 또한 토큰 정보나 디바이스 정보 등과dongx2.tistory.com [ 안드로이드 ] 앱 내에 개발자 모드 추가하기 2[ 안드로이드 ] 앱 내에 개발자 모드 추가하기 개발자 모드가 필요한 이유 개발자 모드를 통해서 서버 모드(상용, QA, Test)를 앱 내에서 변경할 수도 있고, 에러 발생 시 로그를 기록해줄 수도 있습dongx2.tistory.com Intro이번 게시글에선 서버의 상태를 체크하는 기능을 추가할 예정입니다. 커스텀 Preference View 만들기 Android..
[ 안드로이드 ] 앱 내에 개발자 모드 추가하기 개발자 모드가 필요한 이유 개발자 모드를 통해서 서버 모드(상용, QA, Test)를 앱 내에서 변경할 수도 있고, 에러 발생 시 로그를 기록해줄 수도 있습니다. 또한 토큰 정보나 디바이스 정보 등과 dongx2.tistory.com Intro 이전 글에서 개발자 모드를 추가하는 방법에 대해서 간단히 작성해보았습니다. 아직 개발자 모드를 추가하지 않았다면 이전 글을 먼저 보고 와주시면 도움이 될 것 같습니다. 이번 게시글에선 개발자 모드 내에 각종 정보들을 포함하는 방법에 대해 작성해보고자 합니다. 해당 글을 참고하여 각자의 프로젝트에 맞게 응용 해보시면 좋을 것 같습니다. 이 글은 헤이딜러의 Ted Park님의 게시글을 보고 작성하게 되었습니다. 해당 내..
개발자 모드가 필요한 이유 개발자 모드를 통해서 서버 모드(상용, QA, Test)를 앱 내에서 변경할 수도 있고, 에러 발생 시 로그를 기록해줄 수도 있습니다. 또한 토큰 정보나 디바이스 정보 등과 같이 개발 및 테스트에 필요한 정보들을 바로 확인할 수 있게 됩니다. 프로젝트 특성에 따라 테스트를 위한 여러 기능들을 추가할 수도 있습니다. 이처럼 개발자 모드를 이용하면 다른 파트와의 협업 및 오류 추적, 테스트 등이 용이해집니다. 개발자 모드에 필요한 항목 사용자 정보 계정 정보 Access Token Refresh Token FCM Token AD_ID 디바이스 정보 안드로이드 버전 모델 명 기기 이름 기기 uuid 앱 버전 화면 비율 해상도 가로 너비 리소스 버킷 (ex: xxxhdpi) 서버 Ur..
앱 개발을 하다보면 디자인 상으로 블러 처리를 해주어야 할 때가 많은데, 이미지에 블러 처리를 해주는게 아닌 View 자체에 블러 처리가 되는 것을 원했다. 위와 같은 화면을 만들기 위해 해당 라이브러리를 이용했는데, 꽤 괜찮았었고 사용시 주의점 등을 기록하기 위해 해당 글을 작성했다. GitHub - Dimezis/BlurView: Dynamic iOS-like blur of underlying Views for Android Dynamic iOS-like blur of underlying Views for Android - GitHub - Dimezis/BlurView: Dynamic iOS-like blur of underlying Views for Android github.com 라이브러리 적용..
Fragment 위에 또 다른 화면을 띄워야 했다. 새로 띄울 화면은 배경이 반투명으로, 기존의 화면이 비쳐 보여야했기 때문에 새로운 Fragment를 띄우는 것이 아닌 View로 덮어 씌우는 방식을 선택 했다. 이런 식으로 구현하니 뒤로가기 처리가 문제가 되었는데, onBackPressedDispatcher를 이용해서 간단히 해결할 수 있었다. onBackPressedCallback 정의 private val onBackPressedCallback = object : OnBackPressedCallback(true) { override fun handleOnBackPressed() { // 특정 뷰가 보일 떈 직접처리 if(bind.clSelectAssessment.isVisible){ hideSele..
26876번: New Time Nikolay has a digital clock that displays time in 24-hour format, showing two integers: hours (from $00$ to $23$) and minutes (from $00$ to $59$). For example, the clock can show 00:00, 18:42, or 23:59. The clock has two buttons that can be used for manual www.acmicpc.net 문제 이해 & 기본 개념 잘못된 시간과 정확한 시간이 주어지고, 1분씩 증가하는 A버튼, 1시간씩 증가하는 B버튼이 있다. 버튼을 최소 횟수로 눌러서 정확한 시간에 맞추는 문제 중요 포인트 시간..