在我的项目中,我将图像从drawable-hdpi文件夹动态加载到ImageSwitcher
像这样:
int[] images = new int[2];
logoImage = (ImageSwitcher) findViewById(R.id.logo_image);
images[0] = getResources().getIdentifier(ej.getImagemResource(), "drawable", getPackageName());
images[1] = getResources().getIdentifier(ej.getImagemResolvidaResource(), "drawable", getPackageName());
//...
logoImage.setImageResource(images[0]);
但对于设计问题,因为它就像 60000 张小图像,每张 300 x 300 像素,我决定将它们全部放入资产文件夹中并开始加载它们,如下所示:
Drawable[] images = new Drawable[2];
images[0] = Drawable.createFromStream(getAssets().open(ej.getImagemResource() + ".png"), null);
images[1] = Drawable.createFromStream(getAssets().open(ej.getImagemResolvidaResource() + ".png"), null);
//...
问题是,在第二种方式中,根据设备密度(我猜),图像大小的显示方式非常不同,但是当图像进入drawable-hdpi文件夹时,它们在任何密度下都显示得很好。
我该如何解决这个问题?或者将60000张图像放入drawable-hdpi文件夹中是否存在问题?哪种方法是“正确”的?
提前致谢
当您将位图放入drawable-<density>
文件夹,并且设备的确切显示密度没有变体,框架将考虑之间的比率自动缩放它<density>
以及设备的密度。
这样做是为了图像尺寸,in dps,在设备之间保持不变(并且您没有义务为每种可能的密度提供变体)。
当您从资产加载时,“源”密度未知,因此不会执行此自动缩放。因此,存在差异。
如果你想从资源中加载图片“就好像它是 hdpi 一样”,你可以这样做:
Options opts = new BitmapFactory.Options();
opts.inDensity = DisplayMetrics.DENSITY_HIGH;
drawable = Drawable.createFromResourceStream(context.getResources(), null, is, srcName, opts);
也就是说,我认为将所有文件包含在可绘制文件夹中根本没有任何问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)