欺骗为不同的可绘制文件夹提供资源

时间:2013-03-03 03:20:24

标签: android

每次,当我向drawable文件夹提供资源时,这就是我所做的

drawable-xhdpi (96x96 px)
drawable-hdpi  (72x72 px)
drawable-mdpi  (48x48 px)
drawable-ldpi  (36x36 px)

大多数时候,我只是使用GIMP从drawable-xhdpi的最大尺寸图像中执行虚拟缩小。我不会在缩小的图像上执行任何进一步的像素编辑。

最近,我意识到,如果我只提供1个最高分辨率的图像,那么 Android系统会在内部执行缩小图像尺寸。

drawable-xhdpi (96x96 px)
drawable-hdpi  (empty)
drawable-mdpi  (empty)
drawable-ldpi  (empty)

我在2台设备上测试过。这个对我有用。我想知道这是一个很好的技术,以避免繁琐的工作,提供这么多不同大小的图像?对这种技术有任何副作用吗?

2 个答案:

答案 0 :(得分:1)

  

我想知道这是一项避免繁琐工作的好方法   提供这么多不同尺寸的图片?对此有任何副作用   技术

我想(至少)有两个:

  1. 这可能并不总是适用于9个补丁,特别是如果可伸展区域由一个或多个单个像素定义。例如,如果你提供像xhdpi drawable这样的9patch,那么在mdpi设备上,单个像素将有效地“减半”,从而完全消失或与周围的透明像素混合。对于任何高级/低级操作,后者通常都是正确的,因此很可能您的9patch不会按预期显示。

  2. 较大的图像会占用更多的内存空间。特别是在低(呃)端设备上,内部存储器数量有限且堆空间限制相当严格,当加载的图像大于显示所需的图像时,您可能会快速耗尽内存。

    < / LI>

    关于你的评论:如果你只提供xhdpi资源,那么就可以很容易地得到一个样本9patch,它不会在所有不同的屏幕密度上直观地看起来。考虑以下9patch:

    enter image description here

    为了可见性而放大快照:

    enter image description here

    显然,这个想法是当这个9patch被拉伸时,结果是1像素厚的水平蓝线。现在,将此9patch放入xhdpi文件夹中,并比较xhdpi与mdpi的结果:

    enter image description here

    显然,mdpi设备已从xhdpi文件夹缩小了9patch,结果看起来不像预期。

    无论如何,我的观点是,在很多情况下,不为每个密度桶提供9个补丁可能最终看起来很好。请注意这样一个事实,即确实存在可能无法产生预期结果的情况。另外,请考虑内存参数。

答案 1 :(得分:0)

您使用的技术将适用于更少数量的设备.. 因为在市场上有很多不同分辨率和不同尺寸的手机。 在屏幕尺寸较小的一些低分辨率设备中,UI看起来不合适...... 现在举一个例子,你正在使用分辨率为720 * 1280(xhdpi)的启动画面的背景图像,你把它放在Xhdpi可绘制文件夹中,而不是在三星euopa或HTC野火等低端设备中查看这个可绘制的图像会看起来像挤压型。

还有很多其他情况会要求您使用不同的图像集.... 如果您提到的技术适用于所有手机,那么为什么Android会为不同的图像集开发不同的文件夹....:P

相关问题