리소스에서 그리기 가능한 항목을 만드는 방법
이미지가 있습니다.res/drawable/test.png
(R.drawable.test).
나는 이 이미지를 다음과 같은 기능으로 전달하고 싶습니다.Drawable
,예.mButton.setCompoundDrawables()
.
이미지 리소스를 어떻게 변환할 수 있습니까?Drawable
?
활동에 리소스를 가져오는 메서드가 있어야 합니다.수행:
Drawable myIcon = getResources().getDrawable( R.drawable.icon );
API 버전 21에서 이 방법은 더 이상 사용되지 않으며 다음으로 대체할 수 있습니다.
Drawable myIcon = AppCompatResources.getDrawable(context, R.drawable.icon);
사용자 지정 테마를 지정해야 하는 경우 API가 버전 21 이상인 경우에만 다음이 적용됩니다.
Drawable myIcon = ResourcesCompat.getDrawable(getResources(), R.drawable.icon, theme);
이 코드는 더 이상 사용되지 않습니다.
Drawable drawable = getResources().getDrawable( R.drawable.icon );
대신 사용:
Drawable drawable = ContextCompat.getDrawable(getApplicationContext(),R.drawable.icon);
그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);
}
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]);
}
이것은 롤리팝 이전 버전과 이후 버전 모두에서 작동합니다.
벡터 여부에 관계없이 벡터 리소스에서 그리기 가능 가져오기:
AppCompatResources.getDrawable(context, R.drawable.icon);
참고:
ContextCompat.getDrawable(context, R.drawable.icon);
을 생산할 것입니다.android.content.res.Resources$NotFoundException
벡터 리소스용입니다.
이미지가 설정된 보기에서 그리기 가능한 항목을 가져오려고 하는 경우,
ivshowing.setBackgroundResource(R.drawable.one);
그러면 드로잉 가능은 다음 코드를 가진 null 값만 반환합니다...
Drawable drawable = (Drawable) ivshowing.getDrawable();
따라서 특정 뷰에서 그리기 가능한 그림을 검색하려면 다음 코드로 이미지를 설정하는 것이 좋습니다.
ivshowing.setImageResource(R.drawable.one);
그래야만 우리가 정확하게 변환할 수 있습니다.
조각에서 상속하는 경우 다음 작업을 수행할 수 있습니다.
Drawable drawable = getActivity().getDrawable(R.drawable.icon)
호환 가능한 방법으로 구입해야 합니다. 다른 방법은 더 이상 사용되지 않습니다.
Drawable drawable = ResourcesCompat.getDrawable(context.getResources(), R.drawable.my_drawable, null);
Kotlin에서 다음과 같은 작업을 수행할 수 있습니다.
binding.floatingActionButton.setImageDrawable(
AppCompatResources.getDrawable(this, android.R.drawable.ic_delete))
어디에binding
루트 보기이며 이는 다음과 같습니다.Context
가져오기가 필요합니다.
import androidx.appcompat.content.res.AppCompatResources
언급URL : https://stackoverflow.com/questions/4818118/how-to-create-drawable-from-resource
'source' 카테고리의 다른 글
배열로 컬렉션 채우기 (0) | 2023.08.23 |
---|---|
Internet Explorer 7(인터넷 익스플로러 7)에서 절대 위치 부모의 백분율 너비 하위 요소에서 너비가 축소된 이유는 무엇입니까? (0) | 2023.08.23 |
각도 @NGRX에서 이 세 개의 점의 의미는 무엇입니까? (0) | 2023.08.23 |
탐색보기헤더 레이아웃 가져오기/찾기 (0) | 2023.08.23 |
링크를 통해 개인 깃허브 저장소를 공유할 수 있습니까? (0) | 2023.08.23 |