Интерфейс для разных плотностей экрана

Я не понимаю преимущества квалификаторов конфигурации ресурсов, разработанных для поддержки нескольких плотностей экрана, например:

  • для mdpi вы ставите иконку 100x100 px

  • для hdpi ставишь иконку 150x150 px

  • для xhdpi вы кладете иконку 200x200 px

Затем вы отображаете этот значок в imageView с размерами 100 x 100 dip, который уже сохраняет свой размер на нескольких экранах разных размеров и плотностей.

Почему бы нам просто не использовать версию значка xhdpi на вышеприведенных ресурсах в качестве базового ресурса, чтобы он отображался красиво и плавно на экранах с более высокой плотностью, и в то же время Android будет масштабировать его, чтобы соответствовать экранам с более низкой плотностью, для которых версии иконки в формате xhdpi будет достаточно?

Я надеюсь, что я ясно в своем объяснении, спасибо

2 ответа

Решение

Вы, конечно, можете просто отправить -xhdpi Drawables и Android Downsample по мере необходимости. Я ожидаю, что многие разработчики делают именно это.

Тем не менее, пожалуйста, поймите, что вы больше не контролируете, как выглядят ваши рисунки на более низких плотностях. Вы доверяете алгоритму рисования повторной выборки Android, который:

  • будет более оптимизирован для низкого использования ЦП и памяти, чем графический инструмент для настольных ОС, и, следовательно, может быть не столь хорошего качества; а также

  • может отличаться в зависимости от версии ОС Android

Доставка альтернативных иллюстраций с различной плотностью дает вам больше контроля, хотя и требует больше усилий для разработки и большего размера APK.

Если вы не хотите этого контроля, это ваш выбор. В то же время, пожалуйста, не завидуйте желанию других разработчиков иметь такой контроль и иметь потенциально более качественные результаты на устройствах с более низкой плотностью.

Основная причина этого заключается в том, что вы в основном позволяете вам определять несколько макетов для каждого размера экрана с возможностью изменять "ЖЕ" графику с размера экрана на другой, позвольте мне привести вам пример: представьте, что у вас есть действие, его макет определено для экранов mdpi и hdpi. На экране hdpi вы видите полный баннер с текстом внутри (давайте предположим, что ресурс для этого баннера - R.drawable.topbanner), однако этот баннер неудобно показывать на меньшем экране, таком как mdpi, после изменения размера, поэтому вы решили сделать временная версия этого баннера для экранов mdpi с тем же идентификатором ресурса (R.drawable.topbanner), в котором вы, например, удалили некоторый текст. Теперь система будет решать, в зависимости от размера экрана, какой из них использовать.

Другие вопросы по тегам