미분류
안드로이드 개발자로 대기업에 이직하기
안드로이드 개발자로 대기업에 이직하기 주관적인 글은 잘 안쓰려고 하지만, 많은 이들이 이직을 관심사로 두고 있는 것 같아 대기업으로의 이직을 주제로 글을 적고자 한다. 개발자들의 주된 이직의 목적은 대부분 더 나은 연봉 / 복지 등 처우개선이 아닐까 싶다. 하지만 좋은 대우를 해주는 회사는 그만큼 개발자간 경쟁이 치열하고, 채용조건도 까다롭다. 이 글을 더보기…
안드로이드 개발자로 대기업에 이직하기 주관적인 글은 잘 안쓰려고 하지만, 많은 이들이 이직을 관심사로 두고 있는 것 같아 대기업으로의 이직을 주제로 글을 적고자 한다. 개발자들의 주된 이직의 목적은 대부분 더 나은 연봉 / 복지 등 처우개선이 아닐까 싶다. 하지만 좋은 대우를 해주는 회사는 그만큼 개발자간 경쟁이 치열하고, 채용조건도 까다롭다. 이 글을 더보기…
FragmentContainerView란? 액티비티에서 프래그먼트를 호스팅하는 일반적인 패턴 중 하나는 FrameLayout을 사용하는 것이다. androidx.fragment 1.2.0 에서는 FragmentContainerView라는 새로운 뷰를 도입했다. FragmentContainerView는 Fragment를 위해 특별히 설계된 레이아웃이다. FrameLayout을 확장하여 프래그먼트 트랜잭션을 안정적으로 처리 할 수 있고, 프래그먼트 동작을 조정할 수있는 추가 기능도 있다. 사용하는 방법은 프레그먼트용 컨테이너를 구현했던 방법과 동일하다. <androidx.fragment.app.FragmentContainerView xmlns:android=”http://schemas.android.com/apk/res/android” xmlns:app=”http://schemas.android.com/apk/res-auto” 더보기…
내키지는 않지만, LG기기를 구분해야하는 케이스가 생겼다. 일반적으로 클립보드에 컨텐츠를 복사하는 코드는 다음과 같다. ClipboardManager manager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); ClipData clip = ClipData.newPlainText(“simple text”, “Hello, World!”); manager.setPrimaryClip(clip); 일반적인 폰들에서는 모르겠는데, LG 기기들은 확실히 클립보드에 컨텐츠를 복사하면 오버레이 UI 또는 토스트가 노출 되었다. 내 경우에는 앱에서 특정 컨텐츠를 클립보드에 복사후, 복사 완료 더보기…
DataBindingComponent란? DataBindingComponent는 BindingAdapter에 대한 getter를 포함하는 인터페이스다. DataBindingComponent를 구현하는 클래스는 반드시 하나이상의 메서드를 가져야한다. 메서드의 이름은 접두어 get과 @BindingAdapter 메서드를 포함하는 클래스 또는 인터페이스의 이름의 합성어여야한다. 예를들어 @BindingAdapter 메서드를 가지고 있는 클래스의 이름이 ClickBinding이라면 DataBindingComponent구현체가 갖는 메서드의 이름은 getClickBinding()이 된다. 다음 예제 코드들은 데이터바인딩 클래스를 초기화 할 때 주로 사용되는 더보기…
ViewStub이란? ViewStub은 사이즈가 없는 보이지 않는 뷰로 런타임에서 늦은 전개(lazy-inflate)를 원할 때 사용할 수 있다. ViewStub을 보이게 만들거나 inflate() 메서드를 호출하면 레이아웃이 전개되면서 ViewStub을 대체하기 때문에 ViewStub은 사라진다. 전개된 뷰는 ViewStub의 부모 뷰에 추가 된다. 레이아웃에서 ViewStub을 사용하는 예제를 확인하자. <ViewStub android:id=”@+id/stub” android:inflatedId=”@+id/subTree” 더보기…
room.expandProjection 옵션 2019년 10월 9일 Room 2.2.0 stable 버전이 출시 됨에 따라 room.expandProjection 옵션을 사용할 수 있게 되었다. room.expandProjection 옵션 설정하기 android { … defaultConfig { … javaCompileOptions { annotationProcessorOptions { arguments = [“room.expandProjection”:”true”] } } } } 릴리즈 노트 및 공식문서에 다음과 같은 내용이 있다. room.expandProjection: Configures Room to 더보기…
“Canvas: trying to draw too large(” + bitmapSize + “bytes) bitmap.” 위 메시지가 나오는 상황은 DisplayListCanvas에 100MB이상의 Bitmap을 그릴 때 나오는 메시지다. Glide를 사용하고 있음에도 불구하고 해당 메시지가 출력되는것을 확인했다. 이유는 Aspect Ratio가 아주클 때, 예를들어 아주 긴 이미지를 출력할 때 문제가 되었다. 일반적인 경우에는 문제가 되질 않지만 나의 경우 더보기…
You may want screenshot to be at the top position in RecyclerView, ListView or whatever. then You can sort by anything like DATE_TAKEN, DATE_ADDED, DATE_MODIFIED, etc. on Android 10(Pixel), because DATE_TAKEN is 0 (or empty) as a result of query with ,the screenshot just taken is at the end of 더보기…
둥근 모서리를 갖는 단색 배경을 지정하려다 보면 다음과 같이 xml 을 정의한 뒤 View의 배경으로 지정할 수 있다. 하지만 다른 뷰에서 색상이나 radius 값을 변경해야하는 경우 이 xml 을 재사용하기는 쉽지 않다. 그래서 Databinding을 활용해보기로 한다. xml내에서 View 속성에 간단히 radius 값을 입력하는것으로 단색의 둥근 배경을 만들 수 있다.
What is Clean Archtecture? 클린 아키텍처는 Robert C. Martin에 의해 만들어졌으며 그의 블로그 Uncle Bob에서 소개되었으며, 관심사를 계층별로 분리하는 소프트웨어 디자인 철학이다. 클린 아키텍처의 주요 원칙은 코드 종속성이 외부로부터 내부로 의존한다는 것이다. 내부 계층의 코드는 외부 계층의 기능을 알 수 없다. 외부 계층에 존재하는 변수, 함수 및 클래스 (모든 엔티티)는 안쪽계층에서 다시 등장할 더보기…