본문 바로가기

나의 플랫폼/안드로이드

[Android] getColor와 getDrawable deprecated

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

getColor와 getDrawable을 기존 같이 사용 하면 deprecated 가 된다는 warning을 보게 될 것이다.

Lollipop_mr1 버전 이후 부터 함수 호출을 다르게 불러야 한다.


아래와 같은 형태로 불러야 한다.


public static int getColor(Context context, @ColorRes int colorId) {
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP_MR1) {
return context.getResources().getColor(colorId);
} else {
return context.getColor(colorId);
}
}


하지만, Android SDK 에서 호환성을 위해 API를 제공해주고 있습니다.


1. ContextCompat 이용

ContextCompat.getColor(context, R.color.white);


2. ResourceCompat 이용

ResourcesCompat.getColor(context.getResources(), R.color.mdtp_white, null);



getDrawable도 같은 형태로 호출 하면 된다.



참고로 Android에서는 버전을 올릴 수록 이렇게 Compat이 붙는 API 클래스들이 생겨 나고 있다.

낮은 버전에서도 호환성을 위해 지원을 해주는 것 같다.


함수를 사용하고자할 경우, 되도록 Compat이 붙어 있는 클래스를 이용하면 좋을 듯 하다.


참고하세요.