Как вы должны (не) использовать независимые от плотности пиксели на Android?

Один из авторов предложил использовать проект под названием SDP в качестве ответа на вопрос о механизме независимости от плотности Android. Он оправдал это, сказав:

Это может помочь разработчикам Android с поддержкой нескольких экранов

Почему это плохой ответ или плохая идея в целом?

1 ответ

Решение

Несколько причин:

Плохая практика

Подход, принятый этим проектом, возможно, бесполезен, даже разрушителен.

Разрушительный, потому что он нарушает независимость плотности Android. Требуются изображения, которые нуждаются в небольшом масштабировании, чтобы соответствовать фактическому свойству пикселей на дюйм дисплея, поскольку они были разработаны для обобщенной плотности этого устройства. И это масштабирует их, даже до 2,6 раз на 10″ планшетах. Это должно привести к размытым или пиксельным растровым изображениям.

Бесполезно, потому что:

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

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

И если вы действительно хотите, чтобы какая-то графика была больше на большом экране (чего обычно не следует делать, второе изображение здесь прекрасно, за исключением горизонтального растяжения), то вам следует справиться с этим, предоставляя графические объекты для каждого размера / плотности. пара, которую вы хотите поддержать. Например drawable-hdpi, drawable-xhdpi, drawable-sw720dp-hdpi, drawable-sw720dp-xhdpi, Таким образом, растровое изображение не будет нуждаться в масштабировании для больших экранов и будет отображаться в высоком качестве.

вводящий в заблуждение

Снимки экрана не используют одинаковый масштаб для каждого устройства. Nexus 7 выглядит таким же крошечным, как Nexus One.

Когда масштаб сохраняется, сравнение выглядит так при использовании проекта:

Пользовательский интерфейс физически больше на Nexus 7, потому что он увеличен

И вот так, когда он не используется:

Пользовательский интерфейс имеет одинаковый размер на обоих устройствах, потому что Android обрабатывает независимость плотности и не препятствует

Ненужные

Этот проект имеет дело с физическим размером, а не с плотностью экрана. Что он делает, так это масштабирует единицы в зависимости от размера физического экрана.

Это не относится к вопросу, который был задан. Что можно перефразировать как "Как Android обобщает фактическую плотность экрана?".

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