2

我从资产文件夹加载图像,但我有一个问题。

从资产和资源加载的相同图像的尺寸不同 - 分辨率。

为了从资产中获取图像,我使用以下方法:

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 相同吗?

输出图像

谢谢

4

2 回答 2

0

您需要将 setDrawable 与缩放的可绘制对象一起使用。

imageView.setImageDrawable(new BitmapDrawable(getContext().getResources(),bitmap));

这也是为什么不推荐使用其他没有获取 getResources() 参数的方法的原因,它会在这种情况下处理缩放。

于 2012-08-06T21:58:30.167 回答
0

如果要将位图加载到 Imageview,请使用 scaleType 和 adjustViewbounds 参数。因此,例如在 XML 中:

                        <ImageView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:adjustViewBounds="true"
                        android:scaleType="centerInside" />

问题是,当您从资产目录加载图像时,系统不会对您的位图应用任何缩放或处理,而是在使用可绘制文件夹时,android 会尝试根据设备的分辨率缩放图像。

因此,获得完全相同结果的唯一真正方法是为 imageview 使用固定大小,理想情况下,您应该在 dps 中指定它,理想情况下,您应该将该值放在 dimens.xml 文件中,以便您可以为各种系统更改该值配置

于 2012-08-06T21:41:58.613 回答