programing tip

Android-@drawable String에서 리소스 열기

itbloger 2020. 12. 6. 21:16
반응형

Android-@drawable String에서 리소스 열기


나는 가지고있다:

String uri = "@ drawable / myresource.png";

ImageView에서 어떻게로드 할 수 있습니까? this.setImageDrawable?


정말 문자열로 작업해야하는 경우 다음과 같이 시도하십시오.

private void showImage() {
    String uri = "drawable/icon";

    // int imageResource = R.drawable.icon;
    int imageResource = getResources().getIdentifier(uri, null, getPackageName());

    ImageView imageView = (ImageView) findViewById(R.id.myImageView);
    Drawable image = getResources().getDrawable(imageResource);
    imageView.setImageDrawable(image);
}

그렇지 않으면 다음과 같은 R. * 참조로 작업하는 것이 좋습니다.

int imageResource = R.drawable.icon;
Drawable image = getResources().getDrawable(imageResource);

먼저 @drawableJava 코드에서는 구문이 의미 가 없으므로 그렇게하지 마십시오 . 사용 int resourceId=R.drawable.myresource.

어떤 이유로 리소스 이름이 필요하고 정수 ID가 필요한 getIdentifier()경우 Resources개체에 사용 하십시오 .


당신은 또한 당신 자신의 변수를 추가 할 수 있습니다. 제 경우에는 scene.name 사이에 @pfleidi 답변을 따랐습니다. c는 컨텍스트를 나타냅니다.

String uri = "drawable/" + scene.name; 
int imageResource = c.getResources().getIdentifier(uri, null, c.getPackageName());

imageList.setImageResource(imageResource);

기한이 지났지 만 내가 가장 좋아하는 것은 Context를 사용하는 것입니다.

context.getApplicationContext().getResources().getDrawable(R.drawable.placeholder_image)

여기서 placeholder_image 는 리소스의 ID입니다. 귀하의 경우 R.drawable.myresource.

컨텍스트는 활동 또는 애플리케이션이 될 수 있습니다. 당신이 어디에 있든 상관없이 컨텍스트에 대한 참조가 있으며,이를 사용하여 애플리케이션의 컨텍스트를 가져올 수 있습니다.


다른 사람이 내가 가진 문제를 발견하는 경우 JSON에서 이미지 이름을로드 한 다음 식별자를 가져와야했습니다. getIdentifier의 두 번째 매개 변수는 "drawable"로 설정할 수 있습니다. 이것은 @ alia-ramli-ramli 답변에 대한 약간의 변형입니다 ...

String uri = details.getString("circle").toLowerCase();

int imageResource = context.getResources().getIdentifier(uri, "drawable", context.getPackageName());
Drawable image = context.getResources().getDrawable(imageResource);
viewHolder.unit_circle.setImageDrawable(image);

여기에서 확인할 수 있습니다 .

int resID = mContext.getResources().getIdentifier(stringfilename, "drawable", mContext.getPackageName());
iv_imageview.setImageDrawable(ContextCompat.getDrawable(mContext,resID)); 

"drawable"을 getIdentifier () 메소드의 "mipmap"매개 변수로 대체하여 mipmap에서 이미지를 검색 할 수도 있습니다.


나는 같은 문제가 ... 더 이상 사용되지 않는 등. 최소 API 14로 그런 식으로 해결했습니다.

...
...
ImageView imgPoster = viewCache.getImgPoster(resource);
String uri = "drawable/" + film.getPoster();
int imageResource = context.getResources().getIdentifier(uri, null, context.getPackageName());
Drawable image = ContextCompat.getDrawable(context, imageResource);
imgPoster.setImageDrawable(image);

return convertView;
...
...

참고 URL : https://stackoverflow.com/questions/2349652/android-open-resource-from-drawable-string

반응형