[안드로이드] getColor, getDrawable deprecated

안녕하세요. 개발자 드리머즈입니다.


안드로이드에서 코드로 colors.xml에 있는 값에 접급하기 위해 아래의 코드를 사용했습니다.

1
mContext().getResources().getColor(R.color.myBlue, null)
cs


그랬더니 

위의 warning이 발생했습니다. 이 함수를 사용하려면 api level이 23이 되야하는데 현재 app은 api level min이 15로 되어있다는 말이죠.

그래서 낮은 api level(안드로이드 OS 버전)에서도 사용할 수 있는 함수를 사용하려고 봤더니


getColor(int id)함수는 deprecated된 상태였습니다. deprecated된 함수라도 사용은 할 수 있지만 뭔가 꺼리침했습니다. 낮은 운영체제 버전에서도 사용할 수 있는 함수가 없다는 것은 말이 안되니까요. 그래서 스택오버플로우를 찾아봤습니다.


https://stackoverflow.com/questions/31590714/getcolorint-id-deprecated-on-android-6-0-marshmallow-api-23


해결책은 아주 간단했습니다. api level 23부터 지원 라이브러리에 포함된 ContextCompat에 getColor()함수가 추가됐으니 이걸 사용하면 됩니다.


1
ContextCompat.getColor(mContext, R.color.myBlue);
cs


getColor()함수 뿐만 아니라 getDrawable()함수도 비슷한 상황입니다.

https://stackoverflow.com/questions/33815027/android-getdrawable-deprecated-minimum-sdk-17-solution


1
context.getDrawable(id)
cs
함수는 api 레벨 21이상에서 사용 가능하며,


1
context.getResources().getDrawable(id);
cs

함수는 deprecated 상태이기 때문에


1
ContextCompat.getDrawable(Context context, int id)
cs

를 사용하면 될 것 같습니다.

작성자

Posted by 드리머즈

관련 글

댓글 영역