prosource

Android:context.getDrawable()에 대한 대안

probook 2023. 4. 28. 21:08
반응형

Android:context.getDrawable()에 대한 대안

사용한 적이 있습니다.context.getDrawable()내 프로젝트에서 이런 식으로:

Drawable greenProgressbar = context.getDrawable(R.drawable.custom_progressbargreen);

하지만 Eclipse는 나에게 그것이 필요하다는 오류를 주고 있습니다.Minimum API level of 21이것은 빠른 구글 검색 후 내 앱은 오직 에만 사용할 수 있다는 것을 의미합니다.Android 5.0모든 기기가 이 버전의 안드로이드를 사용하는 것은 아니기 때문에 저는 대안을 가지고 싶습니다.context.getDrawable().

SDK 22 설명서에 따르면 이전에 승인된 방법은 더 이상 사용되지 않습니다.

Android.os 이전 버전.Build.VERSION_CODES#JELLY_BEAN.여기에 전달된 리소스 ID가 다른 그리기 가능 리소스에 대한 별칭인 경우 이 함수는 최종 구성 밀도를 올바르게 검색하지 않습니다.즉, 별칭 리소스의 밀도 구성이 실제 리소스와 다를 경우 반환된 그리기 테이블의 밀도가 잘못되어 스케일링이 불량해집니다.

답변에서 지적했듯이, 더 나은 해결책은 ContextCompat을 사용입니다.ContextCompat.getDrawable(context, R.drawable.***)

추가 agetResources()컨텍스트 다음:

Drawable greenProgressbar = context.getResources().getDrawable(R.drawable.custom_progressbargreen);

저도 참고하고 싶은 상황이 있었습니다.getDrawable()현재는 더 이상 사용되지 않는 메서드입니다.

사용한 내용:

myButton.setImageDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.ic_btn_off));
Drawable greenProgressbar = context.getResources().getDrawable(R.drawable.custom_progressbargreen);

Kotlin 프로그래머를 위한 솔루션은 다음과 같습니다.

val greenProgressbar = context!!.getDrawable(R.drawable.custom_progressbargreen)

또는 (API 22에서)

val greenProgressbar = ContextCompat.getDrawable(R.drawable.custom_progressbargreen)
AppCompatResources.getDrawable(context, R.drawable.*)

"getDrawable(id, this.get)"을 사용해야 합니다.테마() ".이 방법은 지금까지 사용되지 않습니다.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    view.setBackground(getResources().getDrawable(R.drawable.radioline,this.getTheme()));
} else {
   view.setBackground(getResources().getDrawable(R.drawable.radioline));
}

ContextCompact.getDrawable(콘텍스트 컨텍스트, 인터레스트) 사용에 동의합니다.ID). 저와 제 앱 대상 API 19에 효과가 있었습니다.

드로잉 가능(Kotlin)으로 작업하지 않고 리소스를 직접 설정할 수도 있습니다.

btn.setImageResource(R.drawable.ic_XXX)

언급URL : https://stackoverflow.com/questions/27796246/android-alternative-for-context-getdrawable

반응형