我正在尝试加载来自Drawable的图像,并且在imageview中未显示任何图像

时间:2018-08-12 07:23:27

标签: java android android-imageview android-drawable webp

我在Drawable中有700张图像,并且有图像名称列表,我需要以编程方式将其加载到imageview中
图片在webp formate中,并且在回收器视图中少于100kb
图片

哪里错了

Java代码

Drawable drawable = mContext.getResources().getDrawable(mContext.getResources().getIdentifier(mData.get(position).getImage(), "drawable", mContext.getPackageName()));             
    holder.image.setImageDrawable(drawable);

布局

<ImageView
                android:id="@+id/fish_image"
                android:layout_width="match_parent"
                android:scaleType="fitXY"
                android:minWidth="100dp"
                android:minHeight="100dp"
                android:background="#ffffff"
                android:layout_height="wrap_content"
                />


我在Drawable中有700张图像,并且有一个图像名称列表,我需要以编程方式将其加载到图像视图中吗?

更新它可以正常运行
 我将图像移到Assets文件夹并从那里加载

try {
            // get input stream
            InputStream ims = mContext.getAssets().open(mData.get(position).getImagename()+".webp");
            // load image as Drawable
            Drawable d = Drawable.createFromStream(ims, null);
            // set image to ImageView
            holder.image.setImageDrawable(d);
            ims .close();
        }
        catch(IOException ex)
        {
            Log.e("image_io",ex.getMessage()+"");
           // return;
        }

2 个答案:

答案 0 :(得分:1)

您应该使用drawable的名称作为字符串,而不是getImageuri()

Drawable drawable = mContext.getResources().getDrawable(mContext.getResources().getIdentifier("drawable_name", "drawable", mContext.getPackageName()));

答案 1 :(得分:0)

Uri uri_for_drawable = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE +
                "://" + getResources().getResourcePackageName(R.drawable.your_image_name)
                + '/' + getResources().getResourceTypeName(R.drawable.your_image_name) + '/' + getResources().getResourceEntryName(R.drawable.your_image_name) );

使用上面的代码从可绘制文件夹中获取图像uri。