我在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;
}
答案 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。