목록안드로이드 (77)
우찬쓰 개발블로그
앱을 개발하다보면 현재 앱이 Foreground 상태인지 Background 상태인지 체크해야 하는 상황이 온다. 예전에는 이러한 상태를 각 엑티비티 마다 체크하는 로직을 넣어서 종합하여 현재 앱이 백그라운드인지 포어그라운드 인지 결정해야 했는데 구글이 AAC 라이브러리를 발표하면서 훨씬 간단한 방법이 생겼다. 먼저 app.gradle에 라이브러리를 추가한다. implementation 'android.arch.lifecycle:extensions:1.1.1' 그다음 구현해놓은 Application에 다음과 같은 코드를 추가한다. class TestApplication: Application(), LifecycleObserver { override fun onCreate() { super.onCreate..
기존 자바에서 Parcelable을 만드려면 잡다한 보일러 코드들을 추가해야 했다. 하지만 코틀린은 역시 친절하게도 이 작업을 줄일 수 있는 방법을 고안해 주었는데, 아직 실험단계라고 하니 코틀린을 믿는자만 쓰도록 하자.(믿숩니다!) 먼저 실험적 문법을 사용하기 위해서는 앱 수준의 gradle에 다음을 추가하자. androidExtensions { experimental = true } 실험적 코드의 사용 여부를 true로 바꾼것이다. gradle sync를 한 다음 만들어둔 data class로 가보자 data class Test(val test1: Int, val test2: String, val test3: Float) 여기서 다음과 같이 어노테이션과 상속을 추가하자. @Parcelize data ..
안드로이드가 오레오, 파이로 넘어가면서 백그라운드 서비스를 다루기가 점점 어려워지고 있다. 사실 어려워진다는 얘기도 백그라운드에서 서비스를 돌리면서도 Notification을 띄우지 않는 기술에 대한 꼼수(?)가 어려워 지고 있는거지 Notification이 뜨든 말든 상관없는 초보자들은 더 혼동이 오기 마련이다. 그래서 안드로이드 초보자의 기준에서, 안드로이드의 백그라운드 서비스를 공식적인 방법으로 띄우는 방법에 대해 알아보자. 여기서 용어를 정의하고 넘어가야 하는데, 앱이 죽든 말든 백그라운드에서 서비스를 죽지않게 하고 싶다면 이것을 포어그라운드 서비스 라고 한다. 따라서 이하 포어그라운드 서비스 라고 부르겠다. 먼저 서비스를 만들어야 하는데 생각보다 간단하다. 서비스를 상속받은 예제 서비스를 만들자..
요구사항에 따라 앱을 만들다보면 간단한 달력을 구현할 일이 생긴다. 기본 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..