Android - Как показать изображения с ресурсов для рисования? - PullRequest
8 голосов
/ 13 июня 2011

Я не могу показать изображение, которое сохраняется в папке 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» на нем. Так что не так? Изображение не может быть прочитано или что-то еще? Как показать изображения?

Честно говоря, я много гуглил и пробовал и другие методы 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's within directions textview...
    directions += " Draai naar links\n";

}

Ответы [ 5 ]

30 голосов
/ 14 июня 2011

Обновление 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);

Если вы хотите показать свой Drawable в 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"/>
6 голосов
/ 05 декабря 2013

Вы можете получить изображение с помощью 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);
1 голос
/ 20 января 2015

Очень простой способ показать это - написать это в своем виджете ImageView в xml:

android:background="@drawable/your_file_name"

... и убедитесь, что вы поместили этот файл изображения (будь то png или jpg и т. Д.) В вашу папку для рисования. Когда вы пишете your_file_name, вам нужен только заголовок, а не расширение файла.

Я предпочитаю этот способ программной записи в вашем файле .java (как показано с другими ответами выше), потому что ваш xml покажет вам изображение в режиме предварительного просмотра, программно - нет, он просто покажет заполнитель ImageView.

0 голосов
/ 08 апреля 2019
  Drawable drawable = getResources().getDrawable(R.mydrawableID);

Теперь вы можете использовать его как Image, например: -

ImageView myImage = findViewById(R.id.yourImageView);

Теперь запустите это -

myImage.setImageResource(drawable);
0 голосов
/ 01 февраля 2018

Самый простой способ - можно рассмотреть код ниже

Мы можем воспользоваться Imageview setImageResource, см. Ниже код для того же. поместите изображение в прорисовку, как показано ниже

image_1.png, image_2.png и т. Д.

int resId = getResources().getIdentifier("image_" + imagePosition, "drawable", getPackageName());
             imageview.setImageResource(resId);
...