Короткий вопрос
У меня в макете Android XML есть кнопка 50 на 40 точек. Какие размеры в пикселях для рисования нужно разместить в папке ресурсов mdpi?
Длинный вопрос
Допустим, у меня есть кнопка 50 x 40 dip.
<Button
android:layout_width="50dip"
android:layout_height="40dip"
android:background="@drawable/someImage" />
Я доволен физическим размером этой кнопки на моем телефоне. У меня вопрос: когда я создаю someImage.png в Photoshop, как мне выбрать размеры изображения в пикселях? В настоящее время я просто делаю его гигантским изображением размером 500 на 400 пикселей и помещаю его в папку ресурсов для рисования по умолчанию, потому что она работает нормально на всех телефонах и планшетах, на которых я тестировал.
Справочная страница по поддержке нескольких экранов не говорит мне, как решить
размеры в пикселях.
Задача № 1 - Базовый график
Эта диаграмма показывает мне только относительные размеры графики, которые мне нужно поместить в каждую папку ресурсов для рисования. Тем не менее, он не сообщает мне размер в пикселях, который необходим для создания моей базовой графики в формате mdpi, по отношению к которой все остальные графические изображения относятся к.
Проблема № 2 - фрагментация плотности экрана
Плотно-независимый пиксель эквивалентен одному физическому пикселю на
Экран 160 точек на дюйм, который является базовой плотностью, принятой системой
для "средней" плотности экрана. Во время выполнения система прозрачно
обрабатывает любое масштабирование дп единиц, по мере необходимости, на основе фактического
плотность экрана в использовании. Преобразование дп единиц на экран
пикселей просто: px = dp * (dpi / 160). Например, на 240 точек на дюйм
Экран, 1 дп равен 1,5 физических пикселей. Вы всегда должны использовать дп
единиц при определении пользовательского интерфейса вашего приложения, чтобы обеспечить правильное отображение
ваш пользовательский интерфейс на экранах с различной плотностью.
Этот маленький кусочек говорит мне, что изображение шириной 50dip на экране 160dpi будет иметь ширину 50px. Так здорово, говорите вы. Я должен сделать мою графику MDPI (160 точек на дюйм подпадает под MDDP) шириной 50 пикселей в Photoshop. Ну, это не так просто, потому что не все телефоны с mdpi имеют разрешение 160 точек на дюйм. Что делать, если у моей мамы телефон с разрешением 167 точек на дюйм? Тогда моя картинка шириной 50dip будет выглядеть как 52.1875px на ее телефоне, что может вызвать некоторые странные размытые артефакты. Так что мне делать? Должен ли я смоделировать базовый mdpi на телефоне моей матери с разрешением 167 точек на дюйм или на модели идеального лабораторного телефона с разрешением 160 точек на дюйм, который, возможно, даже не существует в реальном мире?