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 ...