Я новичок в разработке приложений для планшетов. У меня есть Google Nexus7 с разрешением экрана (600 * 960 dip). Итак, я хочу знать, что он попадает в категорию mdip? В соответствии с этим 1px = 1dp (базовый уровень). Но если я последую этому, это не выглядит хорошо на планшете. Я создаю отдельную папку макета для nexus7 -sw600dp
и упоминаю размеры в соответствии с mdip, но он не работает. Мои изображения тоже не выглядят хорошо. Что я хочу знать, что такое фактический коэффициент конверсии для google nexus 7. Нужна помощь.Преобразование из px в dp для Google nexus 7
ответ
формула: pixels = dips * (density/160)
Нексус 7 800x1280 с плотностью в 213 пикселей, что означает, что разрешение кода является tvdpi
(что означает, что вы можете иметь папку с именем drawable-tvdpi
).
Вы можете измерить доступный размер экрана, минус окно украшения с:
this.getResources().getConfiguration().screenWidthDp;
this.getResources().getConfiguration().screenHeightDp;
На мой N7, он возвращает 600 дп ш, 888 дп час. Следуя приведенной выше формуле, высота 888 dp составляет 1280px - оформление окна.
спасибо за помощь. вы имеете в виду, если я хочу определить макет с 50px, тогда эквивалентный dp будет 'dp = (50/213) * 160' справа? – nilkash
Это правильно. Если это помогло, пожалуйста, отметьте вопрос как решенный. Благодаря! –
Nexus7 - уникальное устройство с несколько странным дизайном.
для Nexus 7
layout-large-hdpi
Вот очень хорошее объяснение (с Дианой Hackborn - андроидом инженер Google): Dianne Hackborn explains the unique resolution of the Nexus7
Примечание: приложение принимает изображения из этих папок только тогда, вы не получили более высокие квалификаторы. Например, если вы указали папку макета, такую как layout-sw360dp, приложение будет принимать только изображения из этой папки, даже если вы предоставили отдельные макеты, подобные тому, что я сказал выше. Потому что в android есть порядок приоритета, в котором вы должны давать макеты.
экрана Плотность
обычно упоминается как точек на дюйм (точек на дюйм). Android группирует все фактические плотности экрана в четыре обобщенные плотности: низкий (120), средний (160), высокий (240) и сверхвысокий (320). Устройство, такое как Galaxy Nexus, имеет «сверхвысокую» плотность экрана (более конкретно, значение dpi задано на 320). Nexus 7 использует «tvdpi» - то есть 213 dpi.
Density Независимый Pixel
Обычно называют дп. Это элемент виртуального пикселя, используемый при показе контента. Независимый от плотности пиксель эквивалентен одному физическому пикселю на экране с разрешением 160 точек на дюйм. Для расчета дп использовать следующую формулу:
px = dp * (dpi/160)
или, что эквивалентно:
dp = (px/dpi) * 160
Причина Nexus 7 может показать больше содержания, чем Galaxy Nexus, несмотря на наличие подобных решений заключается в следующем: точек на дюйм от Nexus 7 ниже, чем Galaxy Nexus.
Галактики Nexus (320 точек на дюйм, 720 пикселей в ширину)
(720/320) * 160 = 360 dp
Nexus 7 (213 точек на дюйм, 800 пикселей в ширину)
(800/213) * 160 = 600 dp
Это означает, что, когда приложения оказывают на Galaxy Nexus, ширина экрана фактически равна 360 дп (отображается с использованием 720 пикселей). В то время как на Nexus 7 ширина экрана составляет 600 дп (отображается с использованием 800 пикселей).
Попробуйте под кодом, дайте значение пикселя ниже метода, это даст вам результат в dp.
public int convertSizeToDeviceDependent(int value) {
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
return ((dm.densityDpi * value)/160);
}
используют эту ссылку, это поможет: HTTP: //www.xcubelabs.com/dpi/index.html –