위에처럼 FullScreen 이면서, StatusBar가 투명으로 나오는 뷰를 그리고자 한다. 구글링 결과, 아래 사항들만 적용하면 된다고 한다. 그리고 왠만하면 Java(Kotlin) 코드로 작성하는 것 보다 XML에서 작성하고 Style 적용이 코드 유지보수에 좋아서 시도를 해봤다. true @android:color/transparent true // 시스템바를 백그라운드에 그린다. true windowTranslucentStatus : StatusBar를 반투명하게 설정한다. statusBarColor : StatusBar 색상을 설정한다. (API 21 이상부터 적용 가능) windowDrawsSystemBarBackgrounds : StatusBar를 백그라운드 위에 그린다. windowFul..
검색 키워드: #Clicking back button twice to exit an activity with RxJava 먼저 Throttle, Debounce에 대해서 알아보겠습니다. /** * RxBinding의 Throttle 기능 사용하는 Button 함수 * @param throttleSecond 해당 시간동안 중복 클릭 방지 (기본으로 1초) * @param subscribe 클릭 리스너 정의 */ fun Button.onThrottleClick(throttleSecond: Long = 1, subscribe: (() -> Unit)? = null) = clicks() .throttleFirst(throttleSecond, TimeUnit.SECONDS) .observeOn(io.reactiv..
볼 때 마다 헷갈리는 map과 flatMap을 파헤쳐 보겠다. // map 예제 val data = listOf("A", "B", "C") val newData = data.map { "$it*" } println("data: $newData") // flatMap 예제 val data2 = listOf("A", "B", "C") val newData2 = data.flatMap { listOf("$it*") } println("data2: $newData2") ---출력 결과--- data: [A*, B*, C*] data2: [A*, B*, C*] Collections 클래스에서 map과 flatMap 함수를 살펴보자 1. map 함수 /** * Returns a list containing the ..
inline 함수와 generic type에서 reified 를 사용하는 걸 종종 볼 수 있다. inline fun Fragment.viewModel(factory: ViewModelProvider.Factory, body: T.() -> Unit): T { val vm = ViewModelProviders.of(this, factory)[T::class.java] vm.body() return vm } 먼저 reified 의 단어의 뜻은 '구체화 된' 이다. (reify: 구체화 하다. 생각하다.) ex) reify a concept. (개념을 구체화하다.) (발음은 특이하게 '리어파이' 이다. 라이파이 아님 주의! ) 어원 그대로 일반 Generic Type과 다르게 더 구체화를 한다고 보면 된다. ..
용어 정리 UseCase : 유스 케이스(Use case)는 UML(통합 모델링 언어)의 행위자(액터)와 액터가 요구하여 시스템이 수행하는 일의 목표이다. Domain : 인터넷 주소, (지식·활동의) 영역; (책임의) 범위 Domain Logic: Business Logic Area로 이해하면 될 것 같다. Entity : 독립체 / DataBase 테이블의 논리적 구조 Clean Architecture에서의 Entity는 Api에서 받은 원시 그대로의 데이터 객체 (DTO)로 보면 된다. 당연히 MVVM을 처음 접하시는 분은 이해가 안가실 겁니다. 저는 처음엔 MVC 패턴과 ViewModel 만을 사용한 MVVM 패턴을 비교해보기 위해 개인 프로젝트를 시작했었습니다. 국가 정보를 가져와서 리스트뷰에 ..
Kotlin List 종류들과 Map 등의 Iterable 객체들은 filter, map 등의 함수를 사용합니다. 1. 일반 사용법 val strList = "한 두울 세에엣 네에에에엣 다서어어어엇".split(" ") val lengthList = strList .filter { println("filter: $it"); it.length > 2 } .map { println("map: ${it.length}"); it.length } .take(2) println(lengthList.toList()) // 출력 결과 filter: 한 filter: 두울 filter: 세에엣 filter: 네에에에엣 filter: 다서어어어엇 map: 3 map: 5 map: 6 [3, 5] 2. Sequence 사용..
자바에서 문자열에서 특정 조건에 따라 배열로 변환하는 방법에 대해서 알아보겠습니다. 주로 split() 함수를 사용하게 되는데요, 하나의 특정 문자열 기준으로 추출하는 방법은 쉽습니다. // 콤마(,) 기준으로 배열로 변환하기 String text = "김갑수,이문수,박명수,유재석,노홍철"; String[] strList = text.split(","); 하지만 조건이 좀 더 복잡해진다면? 예를들어 문자열 "1D2S#10S" 에서 연속된 숫자만 추출한다고 해봅시다. 숫자사이에 '숫자를 제외한 영문 또는 특수문자' 를 기준으로 추출한다면... 음 좀 어려워집니다. 그럴때! 정규표현식을 이용하는 방법을 사용하면 간단해집니다. 먼저 기본적인 정규식의 문법을 살펴봅시다. 정규표현식 표현 설명 ^x 문자열이 x로..