📱 Android

[Android] getColor, getDrawable Deprecated 대응

콩드로이드 2020. 11. 18. 09:31

Android 버전이 업데이트되면, 기존의 함수가 Deprecated가 되기도 합니다.

Deprecated 된 함수들은 버전별로 처리를 해주어야 합니다.

 

 

이번에 살펴볼 함수는 getColor와 getDrawable 함수입니다.

 

 

getColor

public int getColor (int id)

 

getColor는 마시멜로우버전(API 23)에서 부터 Deprecated(getColor)되었다고 나와있습니다.

공식 문서에 보면, getColor(int, android.content.res.Resources.Theme)를 대신해서 쓰라고 나와있습니다만,

 

getColor

 

ContextCompat에 있는 아래의 함수를 사용해서 변경해보도록 하겠습니다.

설명처럼 Build.VERSION_CODES.M (API 23)  에서부터 사용할 수 있습니다.

 

 

 

 

API23이상과 미만을 구분해두고 setTextColor를 예시로 작성해보았습니다.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
	view.setTextColor(ContextCompat.getColor(context, 컬러값))
} else {
	view.setTextColor(context.resources.getColor(컬러값))
 }

 


getDrawable

public Drawable getDrawable (int id)

 

getDrawable은 API22 버전부터 Deprecated(getDrawable) 되었습니다.

getDrawable(int, android.content.res.Resources.Theme)을 사용하라고 나와있습니다만, 

마찬가지로  ContextCompat을 사용해서 변경해보도록 하겠습니다.

 

 

getDrawable

 

 

Build.VERSION_CODES.LOLLIPOP (API 22로 나눕니다)

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
	view.background = ContextCompat.getDrawable(context, 이미지)
} else {
	view.background = context.resources.getDrawable(이미지)
}

 

 

여기까지 getColor, getDrawable 함수의 Deprecated에 대응하는 방법이었습니다.

Android API 버전이 변경되면 Deprecated 되는 부분을 잘 찾아보시길 바랍니다.

언제든 댓글 달아주세요 감사합니다 😊