【问题标题】:ImgIX in Android - how to use dpr for scaling per density?Android 中的 ImgIX - 如何使用 dpr 按密度进行缩放?
【发布时间】:2017-11-29 02:54:02
【问题描述】:

我公司最近收到imgIX 但我不确定如何使用 dpr

我的意思是它直截了当的实际实现,但我怎么知道要使用哪个 dpr 值来匹配 android 密度。文档说 dpr 从 1 变为 8。Android 有 ldpi、mdpi ... xxxxhdpi。那么我该如何匹配这些呢? 此外,考虑到不同的密度,很难相信他们没有 android 文档部分来显示 android 中的用法。

【问题讨论】:

    标签: android imgix


    【解决方案1】:

    阅读有关 sourcesets 的 imgix 文档 .. 所以我最终得到了以下方案:

    我在 values 资源目录中创建了两个整数文件来存储 dpr 值。

    像这样:

    *

        values
            |
            integers.xml 
    values-mdpi
            |
            integers.xml 
    values- hdpi
            |
            integers.xml
    

    //etc 用于所有屏幕密度,因为 android 向下缩放,所以必须做所有密度

    *

    在每个整数文件中,我根据密度找到要使用的正确 dpr。所以在值文件夹中 我使用 2 作为默认值,然后 mdpi 和 hdpi 将具有 1 和 1.5 等...

    这是要使用的比例因子:

    从这里:

    ldpi = 0.00625 * 120 -> 0.75 mdpi = 0.00625 * 160 -> 1.0 hdpi =0.00625 * 240 -> 1.5 xhdpi = 0.00625 * 320 -> 2.0 xxhdpi = 0.00625 * 480 -> 3.0 xxxhdpi = 0.00625 * 640 -> 4.0


    来自here 所以例如默认是:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <integer name="dpr">2</integer>
    </resources>
    

    和 mdpi:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <integer name="dpr">1</integer>
    </resources>
    

    和hdpi:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <Integer name="dpr">2</integer> //this should be 1.5 but lazy to convert to double
    </resources>
    

    然后在代码中,当我构建 imgix 图像时,我分别调用如下值:

    params.put("dpr", "" + getResources().getInteger(R.integer.dpr));
    

    整个调用在自定义视图中看起来像这样(在我的例子中):

    final URLBuilder builder = new URLBuilder(baseUrl);
            params.put("w", String.valueOf(getWidth()));
            params.put("h", String.valueOf(getHeight()));
            params.put("q", IMGIX_QUALITY);
            params.put("auto", "compress");
            params.put("dpr", "" + getResources().getInteger(R.integer.dpr));
            params.put("fix", "max");
            String url = builder.createURL(getImageId(), params);
    
            //then send this off to picasso to cache. etc ...
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    相关资源
    最近更新 更多