목록분류 전체보기 (105)
우찬쓰 개발블로그
요구사항에 따라 앱을 만들다보면 간단한 달력을 구현할 일이 생긴다. 기본 calendar view를 사용할 수도 있지만, 대게 디자이너의 요구사항은 많은 커스텀이 들어간 상태이다. 필요한 캘린더를 위해 github의 수많은 라이브러리를 둘러보는 시간이 아까우니 캘린더 로직을 직접 만들어 보자. java는(kotlin도) Calendar 추상 클래스가 기본적으로 존재하기 때문에 RecyclerView의 GridLayout와 함께 사용하면 매우 간단하게 달력을 구현할 수 있다. 필자는 종속성을 줄이기 위해 아래와 같이 BaseCalendar를 구현하였다. /** * Created by WoochanLee on 25/03/2019. */ class BaseCalendar { companion object { ..
정리할 예정. 참고 https://www.androidhuman.com/lecture/kotlin/2017/11/26/kotlin_android_extensions_on_viewholder/
RecyclerView를 다룰때 padding을 그냥 주게되면 스크롤시 아래처럼 padding 공간만큼 가려지게 된다. 하지만 만약 원하는 요구사항이 RecyclerView 내부에서의 padding이고 스크롤시에는 padding이 없는 것이라면 방법이 있다. RecyclerView에 android:clipToPadding="false"로 옵션을 바꿔주면 다음과 같이 변한다. 스크롤시에는 padding이 사라진 것을 볼 수 있다.
참고 https://github.com/klarson2/CustomCoordinatorLayoutBehavior 이후에 정리 예정
클래스에 변수(이하 프로퍼티)로 선언한 값이 바뀔때 감지하고 싶은 경우가 있다. RxJava를 통해 직접 구현할 수도 있겠지만 코틀린에서는 기본문법으로 제공하고 있다. 한 상황을 예를들어보자. 이 상황은 간단한 상황이다보니 '그냥 메소드로 만들어서 처리하면 되겠는데?' 라고 생각 할 수도 있지만 실제 개발에서 더 복잡한 상황이 된다면 여기저기서 메소드를 호출하고 난잡해 지는 상황이 올 수 있다. 뿐만 아니라 프로퍼티 값에따라 여러 로직을 처리하고 싶을때도 있고 그 로직을 여기저기서 컨트롤 하기에는 스파게티 소스가 되어버릴 수 있다. 이런경우를 대비하여 프로퍼티 값 변경 감지를 위한 소스를 짜보자. class Test { var something: String by Delegates.observable("..
안드로이드 스튜디오에서 프로젝트를 동시에 많이 켜놓으면 버벅이는 현상을 볼 수 있다. 대부분의 개발자라면 컴퓨터 성능 문제이겠거니 하고 넘어가겠지만, 사실 이것은 개선이 가능하다. 안드로이드 스튜디오는 기본 heap 메모리가 1GB 정도로 잡혀있는데, 필자의 경우 32GB메모리이기 때문에 한참 늘려도 상관이 없었다. 간단하게 heap 메로리를 늘려보자. 여기서 Edit Custom VM Options... 로 들어가면 파일 내용으로 -Xmx????m 이라고 되어있는 것이 보일것이다. (없으면 추가한다.) 예시 # custom Android Studio VM options, see https://developer.android.com/studio/intro/studio-config.html -Xmx8192..
RxJava에서 Hot과 Cold의 개념이 나올때마다 헷갈려서 정리. Hot은 구독을 시작하기 전부터 emit이 이루어 지는 것을 말한다.Cold는 구독을 시작한 후 부터 emit이 이루어 지는 것을 말한다. *시간날때 추가로 정리 예정*참고 https://moka.land/android/rxAndroid_study/
안드로이드의 소스를 모듈화 하기 위해 aar 라이브러리 프로젝트를 만들어 보자. 1. 평소처럼 새로운 안드로이드 프로젝트를 생성한다. 2. 라이브러리화 할 소스를 추가한다. 3. manifest에서 필요없는 내용을 지운다. 블루투스 라이브러리의 경우 아래 정도의 정보만 남아있으면 됌. 4. res 폴더에서 필요없는 모든 파일들을 지운다(중요. 지우지 않을경우 라이브러리를 임포트 시킨 프로젝트에서 파일 충돌이 날 수 있음) 5. app 수준의 그래들에서 com.android.application을 com.android.library로 바꾼다. 그리고 applicationId를 삭제한다 apply plugin: 'com.android.library' android { compileSdkVersion 28 d..
scrollview에 fillViewPort = true를 주면 된다. 참조https://developer88.tistory.com/107