[안드로이드] getColor, getDrawable deprecated
프로그래밍/Android 관련2018. 2. 8. 13:36
안녕하세요. 개발자 드리머즈입니다.
안드로이드에서 코드로 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된 함수라도 사용은 할 수 있지만 뭔가 꺼리침했습니다. 낮은 운영체제 버전에서도 사용할 수 있는 함수가 없다는 것은 말이 안되니까요. 그래서 스택오버플로우를 찾아봤습니다.
해결책은 아주 간단했습니다. 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 |
1 | context.getResources().getDrawable(id); | cs |
함수는 deprecated 상태이기 때문에
1 | ContextCompat.getDrawable(Context context, int id) | cs |
를 사용하면 될 것 같습니다.
댓글 영역