2016-08-30 3 views
1

Мне нужна разная компоновка для устройств 4.0, 4.5 и 5.0.Разные макеты Android для 4.0, 4.5 и 5.0 устройств

Но я проверил ширину размера экрана с помощью:

Display display = getWindowManager().getDefaultDisplay(); 
DisplayMetrics outMetrics = new DisplayMetrics(); 
display.getMetrics(outMetrics); 

float density = getResources().getDisplayMetrics().density; 
float dpWidth = outMetrics.widthPixels/density; 

А на

Sony Xperia Sp I have W: 360.0 H: 592.0 
Sony Xperia Z I have the same result W: 360.0 H: 592.0 

но экраны имеют размеры дифферент и макет выглядит действительно diffrent.

Как правильно создать различные макеты для этого и других устройств?

EDIT:

В этом случае макеты выглядят очень разные, потому что один из телефонов изменился FONT SIZE в Настройки устройства .. GG хорошо играл тестировщикам:)

THx все. Проголосовать.

+0

Прочитайте учебный учебник https://developer.android.com/training/basics/supporting-devices/index.html - Sidenote, есть нет такой вещи, как Android 4.5 – mhenryk

+1

@mhenryk Я думаю, OP относится к диагонали экрана 4,5 дюйма – Henry

ответ

1

Android использует независимые от плотности пиксели (dp), поэтому его довольно легко адаптировать к разным размерам. В папке res создайте подпапки, такие как layout-w320p, и настройте свой макет внутри этой папки, чтобы адаптироваться к различным размерам экрана.

Всегда используйте RelativeLayout вместо FrameLayout и позиции позиции относительно устройства. Размеры элементов должны быть сделаны wrap_content, чтобы он автоматически сжимался к устройству.

+0

Я знаю это. http://stackoverflow.com/questions/39221526/android-using-wrong-layout/39221695?noredirect=1#comment65781728_39221695. – Esperanz0

1

Вы можете указать другое расположение на основе точной ширины в пикселях, так как вы уже знаете их:

Примеры

res/layout/main_activity.xml   # For handsets (smaller than 600dp available width) 
res/layout-sw600dp/main_activity.xml # For 7” tablets (600dp wide and bigger) 
res/layout-sw720dp/main_activity.xml # For 10” tablets (720dp wide and bigger) 

res/layout/main_activity.xml   # For handsets (smaller than 600dp available width) 
res/layout-w600dp/main_activity.xml # Multi-pane (any screen with 600dp available width or more) 

Прочитайте официальную андроида документацию о Supporting Multiple Screens

+0

Я знаю. Но я сказал, что 2 разных устройства (и размеры) имеют одинаковую ширину в dp. Поэтому, используя тот же макет в моем примере sw320dp. Но я хотел по-разному для Sony SP и Z. – Esperanz0

+0

Ну ладно, у них есть разные версии андроида? Затем вы можете добавить дополнительный квалификатор для версии платформы – AndroidMechanic

1

Sony Xperia Sp I имеют W: 360,0 H: 592,0Sony Xperia Sp У меня есть W: 360,0 H: 592,0

Sony Xperia Z У меня такой же результат W: 360.0 H: 592.0.

Это не размер экрана. Это полностью зависит от разрешения экрана вашего устройства.

Если поддерживать это разрешение экрана, вы должны создать другой макет или файл значений, как

стоимость sw320dp-ИПЧР стоимость sw320dp-xhdpi стоимость sw320dp-xxhdpi

ИЛИ

drawable-sw320dp-hdpi
вытяжки-sw320dp-xhdpi

вытяжки-sw320dp-xxhdpi

+0

value-sw320dp-hdpi value-sw320dp-xhdpi value-sw320dp-xxhdpi, который помог –

Смежные вопросы