Android: зачем создавать определенные изображения для ldpi, mdpi и hdpi?

В настоящее время я пытаюсь поддерживать более широкий диапазон устройств с моим Android-приложением. Однако даже после прочтения того, что должно сказать Android Dev Guide, я не уверен, почему я должен предоставлять разные графики для ldpi, mdpi и hdpi.

Я понимаю, что изображения будут автоматически масштабироваться, поэтому я могу просто предоставить графику hdpi и позволить устройству делать все остальное. Будет ли качество масштабирования ниже, если устройство это сделает? Будет ли это проблемой производительности? Сейчас я больше беспокоюсь о том, чтобы умножить размер APK на три.

Я могу думать о двух причинах:

  1. Забота разработчиков. Размещение всех версий значков в вашем пакете занимает пространство и пропускную способность, а масштабирование их на лету потребляет процессор. Нет приза за угадывание, которое дешевле на мобильном устройстве. (Я подозреваю, что хотя приложения на рынке Android будут загружать только нужные ресурсы – в этом случае ваши пользователи даже не платят налог на космос / пропускную способность) .
  2. Конкуренция дизайнера: когда вы масштабируете значок вручную, вы можете (и преданный дизайнер настаивать) перепроектировать значок, чтобы получить более четкие результаты, чем автоматическое масштабирование. Посмотрите на эту страницу для подробного объяснения того, почему вручную масштабирование значков является хорошим. (Он говорит главным образом о значках iPhone, но это относится и к значкам Android.)

Я бы предположил, что нужно принимать взвешенное решение между производительностью и размером. Если вы предоставляете только hdpi-графику, ОС, естественно, придется использовать некоторые ресурсы для масштабирования ее для устройств с более низким разрешением. Но если вы предоставите графику hdpi, mdpi и ldpi, потребуется немного больше места.

Однако ваш страх за умножение размера APK на три не слишком важен, на мой взгляд. Прежде всего, если вы каким-либо образом предоставили графику hdpi, добавив графику mdpi и ldpi (размер которой меньше размера графического изображения hdpi ( коэффициент масштабирования приблизительно равен 3: 4: 6 )) увеличит размер, но вдали от Три раза (более близко к двойному). Во-вторых, графика не составляет весь размер APK, поэтому утроить количество изображений не будет в три раза больше размера APK. И, наконец: поскольку Android теперь поддерживает приложения для SD, размер вашего приложения не так важен, как в предыдущих версиях.

Будет ли качество масштабирования ниже, если устройство это сделает?

Это единственная причина, по которой я это сделаю. Я думаю, что для большинства изображений встроенный масштабирующее устройство будет прекрасно. Тем не менее, большинство значков (значок запуска, значки уведомлений) будут очень конкретными пикселями из-за их небольшого размера. В тех случаях, если сделать меньшую версию вручную, вы получите более резкий результат, чем автоматическое масштабирование.

Причиной этого является то, что если вы хотите показать что-то в устройстве hdpi (более высокая плотность пикселей на дюйм), вам нужно больше пикселей для представления одного и того же визуального размера.

Вы можете позволить ОС масштабировать изображение, но оно, вероятно, будет выглядеть размытым.