Android图像可绘制各种分辨率

时间:2017-08-10 20:37:55

标签: android

为了在我的Android应用程序中使用图像,我将使用这种技术:

我将所有图像放入“drawable-xhdpi”文件夹中,让应用程序缩小图像以获得各种分辨率。

我想知道它有意义吗?你有什么经历?

感谢分享......

更新

也许这种方法很好,但另一个问题是:

此技术是否会导致ldpi设备出现内存泄漏?我不想通过使用svg图像来解决问题,假设存在不是基于矢量的位图图像,并且没有替换的替代或替代。使用位图是唯一的选择。但是使用这种方法会影响整体布局,在某些设备中,相关控件的位置会发生变化。

3 个答案:

答案 0 :(得分:2)

虽然这会起作用,但它并不理想,也不推荐。请查看Supporting Multiple Screens的官方文档:

  

虽然系统会执行缩放和调整大小以使您的应用程序在不同的屏幕上工作,但您应该努力针对不同的屏幕尺寸和密度优化您的应用程序。这样,您可以最大化所有设备的用户体验,并且您的用户相信您的应用程序实际上是为他们的设备设计的 - 而不是简单地拉伸到适合他们设备的屏幕。

  

为不同的屏幕密度提供不同的位图drawable   默认情况下,Android会缩放您的位图drawables(.png,.jpg和.gif文件)和Nine-Patch drawables(.9.png文件),以便它们在每个设备上以适当的物理大小呈现。例如,如果您的应用程序仅为基线(中等屏幕密度(mdpi))提供位图可绘制,则系统在高密度屏幕上进行缩放,并在低密度屏幕上缩小它们。此缩放可能会导致位图中的伪像。为了确保您的位图看起来最好,您应该为不同的屏幕密度添加不同分辨率的替代版本。

您可以使用File / New / Image Asset自动生成缩放资源。

答案 1 :(得分:1)

最好的方法是使用SVG个文件而不是PNG并将它们导入Androis工作室中的项目:File -> New -> Vector Asset或使用https://github.com/mikepenz/Android-Iconics等图标字体

SVG文件插入drawable并转换为PNG文件,编译时为了兼容后兼容,但您不需要维护一包文件,只需要一个矢量文件。

答案 2 :(得分:0)

我使用 inkscape 来创建svg绘图并转换为png我认为转换具有更好的质量并支持所有svg功能。

使用 inkscape 和脚本可以进行批量转换,我还没有尝试过,直到现在我逐个转换它们