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]);
}
'IT박스' 카테고리의 다른 글
UITableView, 다시로드 할 때 아래로 스크롤 하시겠습니까? (0) | 2020.12.06 |
---|---|
자바 스크립트에서 n 문자마다 문자를 삽입하려면 어떻게해야합니까? (0) | 2020.12.06 |
케이스 전환 : 하나의 숫자 대신 범위를 사용할 수 있습니까? (0) | 2020.12.06 |
여러 data.frame을 여러 Excel 워크 시트로 쉽게 내보내는 방법 (0) | 2020.12.06 |
추가 필드와 장고의 ManyToMany 관계 (0) | 2020.12.05 |