Android DPI независимость на устройствах с таким же разрешением

У меня есть несколько общих вопросов о независимости экрана Android / DPI / разрешения.

По сути, я имею в виду приложения, основанные на спрайтах, например, на основе Surfaceview.

В каждом руководстве, которое я прочитал (включая официальное), говорится, что вы должны работать только с DPI, а не с разрешением.

Однако что происходит, когда два устройства имеют разные DPI / размер экрана, но одинаковое разрешение? Возьмите вкладку Galaxy 10.1 (1280 x 800 - DPI aprox 150) и Galaxy Note (1280 x 800 aprox 285 DPI, я думаю??)

При отображении спрайта, скажем, 50 x 50 на каждом из них, он будет иметь одинаковый размер относительно размера экрана. Однако, если Android получает спрайт разного размера, потому что он обнаруживает другой DPI (то есть, от LDPI, HDPI и т. Д.), Тогда спрайт будет казаться больше в Note относительно размера экрана, чем на вкладке.

Может кто-нибудь, пожалуйста, объясните мне это, поскольку я просто не могу решить это!! Спасибо всем.

1 ответ

Спрайт 50 x 50 на экране с разрешением 150 точек на дюйм будет намного больше, чем спрайт 50 x 50 на экране с разрешением 285 точек на дюйм. Алгоритм разрешения ресурсов Android предназначен для того, чтобы вы могли определить большее (в пикселях) изображение для использования на экранах с более высокой плотностью.

Если вы хотите, чтобы спрайт был одинакового размера относительно экрана независимо от плотности пикселей, вы можете поместить изображения в drawable-nodpi папку, и они не будут масштабироваться системой. Вы даже можете решить, какой размер изображения использовать в коде после запроса размера экрана. (Начиная с версии 3.2 у вас могут быть папки ресурсов, которые зависят от размера пикселя экрана, но я думаю, что они будут масштабироваться с разрешением dpi.)

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

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