source

리소스에서 그리기 가능한 항목을 만드는 방법

manysource 2023. 8. 23. 21:52

리소스에서 그리기 가능한 항목을 만드는 방법

이미지가 있습니다.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