이미지가 있습니다 res/drawable/test.png
(R.drawable.test). 예
를 들어이 이미지를 허용하는 함수에이 이미지를 전달하고 싶습니다 .Drawable
mButton.setCompoundDrawables()
어떻게 이미지 리소스를로 변환 할 수 Drawable
있습니까?
이미지가 있습니다 res/drawable/test.png
(R.drawable.test). 예
를 들어이 이미지를 허용하는 함수에이 이미지를 전달하고 싶습니다 .Drawable
mButton.setCompoundDrawables()
어떻게 이미지 리소스를로 변환 할 수 Drawable
있습니까?
답변:
활동에는 getResources 메소드가 있어야합니다. 하다:
Drawable myIcon = getResources().getDrawable( R.drawable.icon );
이 코드는 더 이상 사용되지 않습니다.
Drawable drawable = getResources().getDrawable( R.drawable.icon );
대신 이것을 사용하십시오 :
Drawable drawable = ContextCompat.getDrawable(getApplicationContext(),R.drawable.icon);
ResourcesCompat.getDrawable(getResources(), R.drawable.icon, null);
하려면 세 번째 매개 변수가 선택적 테마 인스턴스 인 경우를 사용할 수 있습니다 .
이 getDrawable (int id)
방법은 API 22부터 감가 상각됩니다.
대신 getDrawable (int id, Resources.Theme theme)
API 21+에 대해
코드는 다음과 같습니다.
Drawable myDrawable;
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP){
myDrawable = context.getResources().getDrawable(id, context.getTheme());
} else {
myDrawable = context.getResources().getDrawable(id);
}
getResources().getDrawable(R.drawable.ic_warning_80dp, context?.theme)
getDrawable (...)을 사용할 때 "더 이상 사용되지 않음"메시지가 표시되는 경우 지원 라이브러리에서 다음 방법을 대신 사용해야한다고 덧붙이고 싶습니다.
ContextCompat.getDrawable(getContext(),R.drawable.[name])
이 메소드를 사용할 때 getResources ()를 사용할 필요는 없습니다.
이것은 다음과 같은 일을하는 것과 같습니다.
Drawable mDrawable;
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP){
mDrawable = ContextCompat.getDrawable(getContext(),R.drawable.[name]);
} else {
mDrawable = getResources().getDrawable(R.id.[name]);
}
이것은 Lollipop 이전 버전과 이후 버전 모두에서 작동합니다.