ImgIX в Android - как использовать dpr для масштабирования по плотности?

Моя компания недавно получила imgIX, но я не уверен, как использовать dpr.

Я имею в виду прямую фактическую реализацию, но как мне узнать, какое значение dpr использовать для соответствия плотности Android. Документы говорят, что dpr идет от 1 до 8. В Android есть ldpi, mdpi ... xxxxhdpi. так как я могу сопоставить их? Кроме того, трудно поверить, что у них нет раздела документации для Android, чтобы показать использование в Android с учетом различной плотности.

1 ответ

Решение

Чтение документации imgix о наборе исходных кодов.. поэтому я получил следующую схему:

я создал два целочисленных файла в каталоге значений для хранения значений dpr.

Ну вот так:

*

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

// и т. д. для ВСЕХ плотностей экрана, так как 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


отсюда Так, например, по умолчанию:

<?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 ...
Другие вопросы по тегам