Android(19)
-
[RxJava] Combining Operators (결합 연산자) - merge / zip / combineLatest 비교
RxJava의 결합 연산자(combining operator) 중 merge / zip / combineLatest 의 각 특징을 알아보고, 차이점을 비교해 언제 어떤 함수를 써야 할지에 대해 설명한다. 목차 merge() Flattens two ObservableSources into a single ObservableSource, without any transformation == 변형 없이 두 개의 ObservableSource를 하나의 ObservableSource로 병합한다 특징은 아래와 같다. 여러개의 소스에서 나오는 모든 스트림이 그대로 발행된다. 위의 다이어그램을 보면, merge 함수를 거쳐도 기존 아이템이 고대로 발행된다! 하나의 소스에서 에러가 나면 스트림 자체가 종료된다 위의 다이..
2022.01.24 -
Android 디버깅 방법 및 Tip (Debug mode 사용하기)
앱에서 다양한 이슈로 디버깅을 하게 된다. 이때, 내 맘대로 앱이 동작을 하지 않는다면, 또는 원치 않는 오류가 발생한다면 그 문제가 어디서 생기는지, 이 메서드를 잘 타고 있는 것인지, 변수에 내가 생각한 값이 정상적으로 할당되고 있는지 등등~ 정말 다양한 이유로 디버깅을 해야 한다. 여기서는 안드로이드 스튜디오에서 제공하는 Debug mode 를 통해 디버깅을 하는 방법을 설명한다. 목차 ℹ️ Android Studio Arctic Fox | 2020.3.1 Patch 4 기준으로 작성됨 디버그 모드 사용 방법 가장 먼저 코드의 특정 포인트에서 어떤 값이 들어가 있는지, 메소드는 잘 실행되고 있는지 등을 알기 위해 내가 확인하고 싶은 코드에 break point(중단점)를 걸어야 한다. break p..
2022.01.16 -
[Android] Room - Entity(table) 간의 관계(relationship) 정의하기
지난주에 사이드 프로젝트로 개발하던 개인 앱을 플레이스토어에 출시했다. 사용자가 등록한 RSS 피드를 파싱 해 보여주는 앱으로, 개인적인 필요성에 의해 만들게 된 앱이다. 최근에는 앱 개발 마무리를 하느라 블로그에 글을 쓰지 못했다. 개발하면서 트러블 슈팅한 내용들을 따로 정리만 해놓았어서, 이 내용들을 바탕으로 그동안 밀렸던 블로그 글을 쓰려고 한다 😉 이번 글은 room database 에서 relational query를 사용해 원하는 데이터를 얻는 방법에 대해 설명하려고 한다. 데일리피드 앱에서는 서버 없이 로컬 저장소만으로 앱을 구성했기 때문에, room DB에 많이 의존을 했는데, 이때 겪었던 트러블 슈팅을 통해 알게 된 내용을 공유한다. 목차 Entity(table) 간의 관계 정의하기 SQ..
2021.11.28 -
[Android] EditText 실시간으로 특정 부분의 글자색 변경하기. (텍스트 하이라이트)
EditText를 사용해 사용자로부터 글자를 입력받을 때, 사용자가 글자를 입력하는 동안 특정 로직에 의해 특정 부분의 글자만 색상을 바꿔줘야 할 때가 있다. 이를 구현하는 방법을 소개한다. 목차 결과물 editText 의 끝에 세 글자만 노란색으로 하이라이트를 하는 로직을 적용했을 경우에 대한 결과물이다. 1. TextView 또는 EditText 의 특정 글자색 변경하기 우리는 TextView/EditText 를 사용할 때 setTextColor() 메서드를 통해 글자색을 지정한다. 그런데, 가끔 해당 컴포넌트 내에서도 특정 부분의 글자만 색을 변경해야 할 때가 있다. 예를 들어 특정 문구를 하이라이트를 통해 강조할 경우 등. SpannableStringBuilder.setSpan() 를 통해 쉽게 ..
2021.10.04 -
[RxJava] debounce vs throttle 함수 차이점 비교
쓸 때마다 헷갈리는 debounce, throttle... 이번 기회에 확실히 정리해 두고, 저와 같이 헷갈리시는 분들을 위해 공유합니다. 직접 테스트도 해보니 이해 쏙쏙 목차 debounce 함수 public final Observable debounce(long timeout, @NonNull TimeUnit unit, @NonNull Scheduler scheduler) { Objects.requireNonNull(unit, "unit is null"); Objects.requireNonNull(scheduler, "scheduler is null"); return RxJavaPlugins.onAssembly(new ObservableDebounceTimed(this, timeout, unit, s..
2021.09.08 -
[Android] Recyclerview 클릭한 아이템을 가운데로 scroll 되게 하기
Horizontal Recyclerview 에서 클릭한 아이템(selected item)을 가운데로 scroll 되게 하기. 사실 리스트가 많지 않으면 smoothScrollToPosition 등을 사용하면 되지만, 나의 경우 뿌려주는 리스트가 100개가 넘었기 때문에 smoothScrollToPosition 가 원하는대로 동작하지 않았다. 이와 관련해 구글링을 해보았지만, 원하는 방법을 찾지 못했다. 그래서 scrollToPositionWithOffset() 을 이용해 해결!! // selectedPosition: Recyclerview adapter 를 통해 받아온 클릭된(선택된) 아이템의 position private fun scrollSelectedItemToCenter(selectedPositi..
2021.08.16