목록2021/04 (3)
우찬쓰 개발블로그
현재 개발하고 있는 토이 프로젝트에 RxJava는 쓰지않는데 EventBus기능이 필요해졌다. LocalBroadcastManager를 쓸수도 있겠지만, 이 클래스는 context를 필요로 하다보니 코드의 양이 늘어나는 문제도 있고, 현재 프로젝트의 아키텍쳐 구조를 헤칠것 같았다. 그래서 Coroutine에 있는 SharedFlow를 이용하여 EventBus를 구현해보기로 했다. 유저가 글쓰기를 하고나면, 다른 화면에서 이벤트를 받아서 리프레시 해주어야 한다. Coroutine 공식 문서를 보면 EventBus에 대한 가이드를 어느정도 해주고 있다. kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-sh..
MVVM 아키텍에서 LiveData를 쓰다보면 흔하게 마주할 수 있는 상황이 바로 Event 일회성 처리에 대한 문제이다. private val _eventStartSettingActivity = MutableLiveData() val eventStartSettingActivity: LiveData get() = _eventStartSettingActivity MainActivity로부터 SettingActivity를 시작하는 다음과 같은 event용 LiveData가 있다고 해보자. 이 이벤트를 emit하는 곳은 activity_main.xml에서 onClick을 처리하도록한 databinding이라고 생각하고, 이 클릭이벤트의 대한 메소드를 아래와 같이 정의했다. fun onClickSettingMe..
안드로이드 10부터 다크모드를 지원하기 시작했지만, 실제 적용해본적이 없어서 토이프로젝트에 적용해보기로 했습니다. 일단 결과물을 볼까요? 저는 기본적으로 흰색과 검은색으로 테마를 정했기 때문에, 깔끔한 다크모드가 적용된 것을 보실 수 있습니다. 그럼 바로 그 과정을 시작해봅시다. 위처럼 기존에 하드하게 박혀있던 컬러를 걷어내야 되겠죠? 이제는 values에 있는 color.xml을 복사해서 한벌을 더 준비해줍니다. 다크모드에 들어갈 color.xml은 values-night에 넣어주시면 됩니다. 그리고 저는 텍스트 컬러를 직접 이름으로 구분하여 컬러를 각각 다르게 넣어줬습니다. themes도 마찬가지로 나누어서 두벌을 준비하고, 각각의 설정 컬러를 새롭게 적용해줍니다. 이렇게만 하면 끝입니다! 라고 말하..