【问题标题】:Scaling drawables for multiple screen densities针对多种屏幕密度缩放可绘制对象
【发布时间】:2014-10-25 00:29:50
【问题描述】:

为每个 android 可绘制屏幕密度(hdpi、ldpi、xhdpi 等)缩放图像的推荐方法是什么?我们是否应该使用源图像分辨率作为最高密度 (xxhdpi) 的分辨率并从那里缩放?在我的情况下,我明确地将布局中图像的大小设置为 50 x 50 dp,那么我是否应该缩放可绘制对象以使我的 mdpi 为 50x50 并以此为基础设置其他分辨率?

PS:为什么我们必须手动缩放可绘制对象,如果它们在放置时无论如何都会被缩放(效率低/干净吗?)

【问题讨论】:

    标签: android


    【解决方案1】:

    推荐的方法是拥有所有文件夹:

    • drawable-ldpi
    • drawable-mdpi
    • drawable-hdpi
    • 等等……

    并且在每个文件夹中以相应的分辨率和相同的名称重复绘制。 Android 将根据设备分辨率知道将使用哪一个。它不会缩放它们。

    PS:如果您有正确的文件夹结构,您的图像将不会以编程方式缩放。所以效率会更高。在高分辨率设备中缩放低分辨率可绘制对象将导致像素化可绘制对象。反之亦然,它看起来也会很糟糕。

    【讨论】:

      【解决方案2】:

      Should we use the source image resolution as the resolution for the highest density (xxhdpi) and scale from there? :最好准备最高分辨率的图像并缩小,以获得更好的质量。

      In my case I am explicitly setting the size of the image in the layout to 50 x 50 dp, so should I scale the drawable so that my mdpi is 50x50 and base the other resolutions around that?是的。使用比例因子乘数确定其他分辨率大小(ldpi 为 0.75,mdpi 为 1,hdpi 为 1.5,xhdpi 为 2,xxhdpi 为 3,xxxhdpi 为 4)

      Why do we have to scale drawables manually if they will get scaled anyways when being placed (is it less efficient/clean?) 是的。您可以让 Android 无需进行扩展工作(性能,在微观层面)。并具有更好的整体质量(更清洁)。

      【讨论】:

      • 那么,请接受我的回答,以便将问题从未回答队列中删除。
      • 是的,我只是在等 5 分钟计时器。
      • @Frank,如果案例不是50x50,如果我正在为整个布局进行设计,那么我应该从什么尺寸开始,如果我想支持xxxhdpi,那么图像多少尺寸(w,h)应该是 - 我的意思是整个设计 - 从那里我可以制作 xxxhdpi,然后缩小 /3 然后 /2 然后 /1.5 ...等等,对吗?
      • @Yazan 确保从 (mdpi * 4) 开始,即 xxxhdpi。然后继续 (mdpi * 3) - 这是不是 xxxhdpi / 3。如果您在图形编辑器中处理 dpi,您只需重新设置 dpi,它就会为您进行像素缩放。即:您有一张 400x800 像素的图片 @ 640 dpi (xxxhdpi)。如果将 dpi 设置为 480 (xxhdpi),它将正确地将图像缩放为 300x600 像素 (mdpi * 3)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-27
      • 2013-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-02
      相关资源
      最近更新 更多