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);