IT박스

Android에서 드로어 블의 이미지를 동적으로 설정하는 방법은 무엇입니까?

itboxs 2020. 12. 6. 21:19
반응형

Android에서 드로어 블의 이미지를 동적으로 설정하는 방법은 무엇입니까?


내 프로젝트 관련 이미지를 드로어 블 폴더에 저장하고 있습니다. 또한 이미지 이름을 문자열 변수에 저장하고 동적으로 해당 이미지를 imageview로 설정하려고합니다. 그러나 이미지가 표시되지 않습니다. 이와 관련하여 저를 도와주세요.

내 코드 :

int res = getResources().getIdentifier(imagename, "drawable", this.getPackageName());
imageview= (ImageView)findViewById(R.id.imageView);
imageview.setImageResource(res);

위 코드에서 "imagename"은 이미지 이름을 포함하는 문자열 변수입니다.

미리 감사드립니다


이 시도:

String uri = "@drawable/myresource";  // where myresource (without the extension) is the file

int imageResource = getResources().getIdentifier(uri, null, getPackageName());

imageview= (ImageView)findViewById(R.id.imageView);
Drawable res = getResources().getDrawable(imageResource);
imageView.setImageDrawable(res);

여기에 내가 설정하고 frnd_inactive에서 이미지를 drawable이미지에

 imageview= (ImageView)findViewById(R.id.imageView);
 imageview.setImageDrawable(getResources().getDrawable(R.drawable.frnd_inactive));

imageview= (ImageView)findViewById(R.id.imageView);
imageview.setImageResource(R.drawable.mydrawable);

동적 코드 시도

String fnm = "cat"; //  this is image file name
String PACKAGE_NAME = getApplicationContext().getPackageName();
int imgId = getResources().getIdentifier(PACKAGE_NAME+":drawable/"+fnm , null, null);
System.out.println("IMG ID :: "+imgId);
System.out.println("PACKAGE_NAME :: "+PACKAGE_NAME);
//    Bitmap bitmap = BitmapFactory.decodeResource(getResources(),imgId);
your_image_view.setImageBitmap(BitmapFactory.decodeResource(getResources(),imgId));

위의 코드에서는 둘 다 가지고있는 Image-file-Name 및 Image-View 개체 가 필요 합니다.


이것은 나를 위해 일하는 아래 코드를 참조하십시오.

iv.setImageResource(getResources().getIdentifier(
                "imagename", "drawable", "com.package.application"));

이것은 나를 위해 작동합니다 (이미지의 확장자를 사용하지 말고 이름 만 사용하십시오).

String imagename = "myImage";
int res = getResources().getIdentifier(imagename, "drawable", this.getPackageName());
imageview= (ImageView)findViewById(R.id.imageView);
imageview.setImageResource(res);

다음은 오늘날 모든 전화기에서 작동 하는 가장 좋은 방법입니다 . 대부분의 답변은 더 이상 사용되지 않거나 19 또는 22 이상의 API가 필요합니다. 조각 코드를 사용하거나 활동 코드가 필요한 항목에 따라 달라집니다.

파편

//setting the bitmap from the drawable folder
Bitmap bitmap= BitmapFactory.decodeResource(getActivity().getResources(), R.drawable.my_image);

//set the image to the imageView
imageView.setImageBitmap(bitmap);

활동

//setting the bitmap from the drawable folder
Bitmap bitmap= BitmapFactory.decodeResource(MyActivity.this.getResources(), R.drawable.my_image);

//set the image to the imageView
imageView.setImageBitmap(bitmap);

건배!


imageView.setImageResource(R.drawable.picname);

getDrawable() 더 이상 사용되지 않으므로 이것을 시도하십시오

imageView.setImageResource(R.drawable.fileName)

먼저 이미지 이름이 myimage 입니다. 그래서 당신이해야 할 일은 Drawable로 이동하여 이미지 이름 myimage를 저장하는 것 입니다.

이제 이미지 이름 만 알고 있고 이에 액세스해야한다고 가정합니다. 아래 스 니펫을 사용하여 액세스하십시오.

당신이 한 일은 정확합니다. 코딩 내부에서 사용할 이미지 이름을 저장했는지 확인하십시오.

public static int getResourceId(Context context, String name, String resourceType) {
    return context.getResources().getIdentifier(toResourceString(name), resourceType, context.getPackageName());
}

private static String toResourceString(String name) {
    return name.replace("(", "")
               .replace(")", "")
               .replace(" ", "_")
               .replace("-", "_")
               .replace("'", "")
               .replace("&", "")
               .toLowerCase();
}

그 외에도 빈 공간과 대소 문자 구분이 없는지 확인해야합니다.


As of API 22, getResources().getDrawable() is deprecated (see also Android getResources().getDrawable() deprecated API 22). Here is a new way to set the image resource dynamically:

String resourceId = "@drawable/myResourceName"; // where myResourceName is the name of your resource file, minus the file extension
int imageResource = getResources().getIdentifier(resourceId, null, getPackageName());
Drawable drawable = ContextCompat.getDrawable(this, imageResource); // For API 21+, gets a drawable styled for theme of passed Context
imageview = (ImageView) findViewById(R.id.imageView);
imageview.setImageDrawable(drawable);

This works fine for me.

final R.drawable drawableResources = new R.drawable(); 
final Class<R.drawable> c = R.drawable.class;
final Field[] fields = c.getDeclaredFields();
for (int i=0; i < fields.length;i++) 
{
     resourceId[i] = fields[i].getInt(drawableResources);  
    /* till here you get all the images into the int array resourceId.*/
}
imageview= (ImageView)findViewById(R.id.imageView);
if(your condition)
{
   imageview.setImageResource(resourceId[any]);
}

getDrawable() is deprecated. now you can use

imageView.setImageDrawable(ContextCompat.getDrawable(this,R.drawable.msg_status_client_read)) 

int[] phptr=new int[5];

adding image pointer to array

for(int lv=0;lv<3;lv++)
    {
        String id="a"+String.valueOf(lv+1);
        phptr[lv]= getResources().getIdentifier(id, "drawable", getPackageName());
    }

for(int loopvariable=0;loopvariable<3;loopvariable++) 
    {
        et[loopvariable] = findViewById(p[loopvariable]);
    }



for(int lv=0;lv<3;lv++)
    {
        et[k].setImageResource(phptr[k]);
    }

참고URL : https://stackoverflow.com/questions/11737607/how-to-set-the-image-from-drawable-dynamically-in-android

반응형