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 \”文字的小方块。 那怎么了?无法读取图像或其他? 如何显示图像? 老实说,我在Google上搜索了很多,也尝试了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(this);         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\";

}
    
已邀请:
        2016年12月12日更新: api 22中已弃用getResources()。getDrawable(),因此您现在应该使用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\"/>
    
        您可以借助pImg获取图像,根据适配器位置获取图像名称的字符串,该图像应显示在drawable文件夹中。
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);
    
        一种显示它的超级简单方法是在xml的ImageView小部件中编写此代码:
android:background=\"@drawable/your_file_name\"
...,并确保已将该图像文件(无论是png还是jpg等)放入可绘制文件夹中。当您编写“ 9”时,仅需要标题,而无需文件扩展名。 与以编程方式写入.java文件相比,我更喜欢这种方式(如上述其他答案所示),因为您的xml将以预览方式显示图像,而以编程方式则不会,而是仅显示ImageView占位符。     
        最简单的方法-可以考虑以下代码 我们可以利用Imageview setImageResource,同样参考下面的代码。  将图像按以下顺序放入可绘制对象中 image_1.png,image_2.png等
int resId = getResources().getIdentifier(\"image_\" + imagePosition, \"drawable\", getPackageName());
             imageview.setImageResource(resId);
    
        
  Drawable drawable = getResources().getDrawable(R.mydrawableID);
现在您可以将其用作图像,例如:
ImageView myImage = findViewById(R.id.yourImageView);
现在开火-
myImage.setImageResource(drawable);
    
        您应使用ѭ14表示Android上的向后兼容功能。
//Using ButterKnife
@BindView(R.id.DogImg)
    ImageView myImage;
//Or 
  ImageView myImage = findViewById(R.id.MyImage);
...
Drawable MyImageDrw = ContextCompat.getDrawable(context,R.drawable.myImageOnResources);
myImage.setImageDrawable(MyImageDrw);
    

要回复问题请先登录注册