У меня есть два устройства Android, которые имеют одинаковое разрешение и PPI. Но когда я запускаю приложение для одного устройства, которое является вкладкой Samsung Tab 4, ресурсы вызывается из обычной папки макета. Но для другого устройства, которое является Samsung J Max, оно находится из папки layout-600. Почему это ведет себя по-разному для этих устройств? Любые предложения будут ценны.Ресурсы Android, вызванные из разных папок макета
ответ
Квалификатор 600
в layout-600
имеет размер экрана в dp
и не обязательно с разрешением DPI или разрешением экрана в пикселях. Также учитываются другие факторы, такие как соотношение сторон и диагональный размер экрана.
Вы можете определить размеры экрана в dp
программно с помощью инструкции в этом post:
Configuration configuration = yourActivity.getResources().getConfiguration();
int screenWidthDp = configuration.screenWidthDp; //The current width of the available screen space, in dp units, corresponding to screen width resource qualifier.
Я держал пари, что значение screenWidthDp
отличается между этими устройствами.
Это зависит от плотности пикселей (СП) для Android устройств, которые очень от устройства к устройству и в соответствии с этим Android устройства обнаружения автоматически, из которых папки раскладка будет показывать интерфейс, здесь мало информации, как это работает:
Поскольку вы разрабатываете свой пользовательский интерфейс для разных размеров экрана, вы обнаружите, что для каждого дизайна требуется минимальное пространство. . Таким образом, каждый обобщенный размер экрана имеет соответствующее минимальное разрешение, определенное системой . Эти минимальные размеры находятся в единицах «dp» - те же единицы , которые вы должны использовать при определении своих макетов, что позволяет системе избежать беспокойства относительно изменений плотности экрана.
экраны XLarge, по крайней мере 960dp х 720dp
большие экраны, по меньшей мере 640dp х 480dp
нормальные экраны, по меньшей мере 470dp х 320dp
маленькие экраны , по крайней мере 426dp х 320dp
набор из шести обобщенных плотностей:
ldpi (низкий) ~ 120dpi
MDPI (среда) ~ 160dpi
ИПЧР (высокий) ~ 240dpi
xhdpi (сверхвысокого) ~ 320dpi
xxhdpi (экстра- сверхвысокий) ~ 480dpi
xxxhdpi (экстра-экстра-экстра-высокий) ~ 640dpi
Для получения дополнительной информации, пожалуйста, прочитайте Google документ: https://developer.android.com/guide/practices/screens_support.html
Вы должны проверить This Google Article.Он указал, что:
В этом контексте у Samsung еще один маленький сюрприз: если вы выполняете арифметику, ее экран имеет 170 DPI, что далеко от самого плотного среди Android-устройств. Тем не менее, он объявляет себя «hdpi» (и имеет «большой» размер экрана). Причина проста: это выглядит лучше.
Это означает, что ваш Tab
ppi - 170 (не 220ppi). В результате: 800 ширина, 170 ppi -> 800/(170/160)> 600. Вот почему ваш ресурс Samsung Tab 4 находится из папки «layout-sw600dp»