나의 플랫폼/안드로이드
[Android] getColor와 getDrawable deprecated
GsBOB
2016. 4. 7. 10:14
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이 붙어 있는 클래스를 이용하면 좋을 듯 하다.
참고하세요.