Дп различия между Nexus5 и Nexus5X?

Я определил этот макет:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<ImageView
    android:id="@+id/ivSmartphone"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:src="@drawable/intro_smartphone_data" />


<ImageView
    android:id="@+id/ivData1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@id/ivSmartphone"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="90dp"
    android:src="@drawable/intro_data_1" />


<ImageView
    android:id="@+id/ivData2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/ivData1"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="10dp"
    android:src="@drawable/intro_data_2" />


<ImageView
    android:id="@+id/ivData3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/ivData2"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="10dp"
    android:src="@drawable/intro_data_3" />


<ImageView
    android:id="@+id/ivData4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/ivData3"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="10dp"
    android:src="@drawable/intro_data_4" />
</RelativeLayout>

Это должно выглядеть так в соответствии с окном предварительного просмотра студии Android: предварительный просмотр дизайнера

На Nexus5X это выглядит точно так же, но на Nexus5 я получаю

Я думал, что Nexus5X и Nexus5 имеют одинаковую плотность и берут изображения из одного каталога xxhdpi? Так чего не хватает?

Заранее спасибо.

1 ответ

Размер Nexus 5 составляет 360x640dp, в то время как у Nexus 5X 411x731dp при той же плотности.

Поэтому, когда вы определите свой макет, как это

<ImageView
    android:id="@+id/ivSmartphone"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:src="@drawable/intro_smartphone_data" />

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

<ImageView
    android:id="@+id/ivSmartphone"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="4dp"
    android:layout_marginRight="4dp"
    android:scaleType="fitCentered"
    android:src="@drawable/intro_smartphone_data" />

fitCentered может также улучшить изображение. Если у вас все в порядке с большим интервалом, подумайте об использовании centerInside вместо.

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