Android - Как показывать изображения из ресурсов?
Я не могу показать изображение, которое сохраняется в папке res/drawable.
Для этого я использую ImageGetter. Код ниже:
ImageGetter imageGetter3 = new ImageGetter() {
public Drawable getDrawable(String source) {
int id=0;
if (source.equals("smiley")) {
id = R.drawable.smiley;
}
Drawable d = getResources().getDrawable(id);
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
return d;
}
};
directions += "Je bent bij lokaal " + vertrek.getNaam() + "\n"
+ "Sta met je rug voor de deur\n"
+ Html.fromHtml("<img src=\"smiley\">", imageGetter3, null) + " Draai naar links\n";
То, что я вижу на экране при запуске, представляет собой небольшой квадрат с текстом "obj".
Так что же не так? Изображение нельзя прочитать или что-то еще?
Как показывать изображения?
Честно говоря, у меня много Googled и пробовал другие методы ImageGetter, но никто из них, похоже, не работает, я тоже пробовал их, они не работают:
ImageGetter imageGetter2 = new ImageGetter() {
public Drawable getDrawable(String source) {
Drawable d = null;
d = Drawable.createFromPath(source);
d.setBounds(0,0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
return d;
}
};
ImageGetter imageGetter = new ImageGetter() {
public Drawable getDrawable(String source) {
Drawable drawFromPath;
int path = Route.this.getResources().getIdentifier(source, "drawable","com.prj56.tracingapp");
drawFromPath = (Drawable) Route.this.getResources().getDrawable(path);
drawFromPath.setBounds(0, 0, drawFromPath.getIntrinsicWidth(), drawFromPath.getIntrinsicHeight());
return drawFromPath;
}
};
=============================================== ========== если (....) { ImageView iv1 = новый ImageView (это); iv1.setImageResource(R.drawable.smiley);
directions += "Je bent bij lokaal " + vertrek.getNaam() + "\n"
+ "Sta met je rug voor de deur\n";
HERE COMES THE IMAGE! BUT HOW TO DO THIS? It within directions textview...
directions += " Draai naar links\n";
}
Ответы
Ответ 1
Обновление 12 декабря 2016 г.:
getResources(). getDrawable() устарел в api 22, поэтому теперь вы должны использовать ContextCompat.getDrawable, например.
Drawable d = ContextCompat.getDrawable(context, R.drawable.smiley);
В своей деятельности вы можете вызвать это, чтобы получить ресурс Drawable как объект Drawable
Drawable d = getResources().getDrawable(R.drawable.smiley);
Если вы хотите показать свою возможность рисования в ImageView, вы можете сделать это:
ImageView i = new ImageView(this);
i.setImageResource(R.drawable.smiley);
или в вашем XML файле
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/smiley"/>
Ответ 2
Вы можете получить изображение с помощью pImg. В позиции адаптера получите строку, которая является именем изображения. Изображение должно присутствовать в папке с возможностью переноса.
ImageView prodImg=(ImageView)view.findViewById(R.id.img_proj_name);
String pImg=prod.get(position);
int resID = view.getResources().getIdentifier("@drawable/"+pImg , "drawable", parentView.getContext().getPackageName());
prodImg.setImageResource(resID);
Ответ 3
Самый простой способ показать это - записать это в свой виджет ImageView в xml:
android:background="@drawable/your_file_name"
... и убедитесь, что вы поместили этот файл изображения (будь то png или jpg и т.д.) в свою папку. Когда вы пишете your_file_name
, вам нужен только заголовок, а не расширение файла.
Я предпочитаю этот способ программно писать в вашем .java файле (как показано в других ответах выше), потому что ваш xml покажет вам изображение в предварительном просмотре, программно не будет, он просто покажет место для ImageView.
Ответ 4
Самый простой способ - Можно рассмотреть приведенный ниже код
Мы можем использовать Imageview setImageResource, см. ниже код для него.
поместите изображение в drawable, как показано ниже.
image_1.png, image_2.png и т.д.
int resId = getResources().getIdentifier("image_" + imagePosition, "drawable", getPackageName());
imageview.setImageResource(resId);
Ответ 5
Drawable drawable = getResources().getDrawable(R.mydrawableID);
Теперь вы можете использовать его как изображение, например: -
ImageView myImage = findViewById(R.id.yourImageView);
Теперь запустите это -
myImage.setImageResource(drawable);
Ответ 6
Вы должны использовать ContextCompat
для функций обратной совместимости на Android.
Drawable MyImageDrw = ContextCompat.getDrawable(context,R.drawable.myImage);
MyImageDrw .setImageDrawable(MyImageDrw);