我从assets文件夹加载图片,但我有一个问题。
从资源和资源加载的相同图像不是相同的尺寸 - 分辨率。
为了从资产中获取图像,我使用此方法:
AssetManager am=this.getAssets();
try {
Bitmap bmp = BitmapFactory.decodeStream(am.open("imgs/a.jpg"));
imageViewDraw.setImageBitmap(bmp);
} catch (IOException e) {
e.printStackTrace();
}
从R.drawable加载的同一图像的输出和资产在图像上
有人可以告诉我为什么以及如何从资产中读取图像,但解决方案应该与R.drawable相同?
由于
答案 0 :(得分:0)
如果要将位图加载到Imageview,请使用scaleType和adjustViewbounds参数。例如,在XML中:
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:scaleType="centerInside" />
当您从资源目录加载图像时,系统不会对您的位图应用任何缩放或进程,而是在使用drawable文件夹时,android会尝试根据您设备的分辨率缩放图像。 / p>
因此,获得完全相同结果的唯一真正方法是为imageview使用固定大小,理想情况下,您应该以dps指定它,理想情况下,您应该将该值放在dimens.xml文件上,以便您可以更改该值适用于各种系统配置
答案 1 :(得分:0)
您需要使用setDrawable而不是缩放的drawable。
imageView.setImageDrawable(new BitmapDrawable(getContext()。getResources(),bitmap));
这也是为什么不推荐使用另一个没有获取getResources()参数的方法的原因,它会处理这种情况下的缩放。