Как мне поддерживать одинаковый размер экрана, но разные точки на дюйм? - PullRequest
0 голосов
/ 04 января 2019

Итак, у меня есть изображение, и я создал несколько копий изображения, поместив их в разные папки для рисования.

<ImageView
    android:id="@+id/Profile_Button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:contentDescription="@string/profile_button"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:srcCompat="@drawable/profile_bar"
    android:focusable="true" />

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

Например, дизайн моего приложения выглядит превосходно на Nexus 5, но когда я переключаюсь на Pixel, он портится, даже если размер экрана такой же. Я узнал, что dpi отличается, поэтому он портится.

Итак, как мне поддерживать один и тот же размер экрана с разными dpi?

Редактировать: ссылка на то, как выглядит экран на Nexus 5 и Pixel - https://imgur.com/a/iMeSwV8

Редактировать 2: XML-код того, как я решил создать три моих изображения. Дизайн правильный сейчас, кроме одного. Вместо того, чтобы появляться в верхней части экрана, три изображения появляются в центре экрана. Если я смогу переместить эти изображения наверх, моя проблема будет решена.

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/Profile_Button"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:clickable="true"
        android:contentDescription="@string/profile_button"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/profile_bar"
        android:focusable="true" />

    <ImageView
        android:id="@+id/Game_Button"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:clickable="true"
        android:contentDescription="@string/game_button"
        app:layout_constraintEnd_toStartOf="@+id/Messages_Button"
        app:layout_constraintStart_toEndOf="@+id/Profile_Button"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/podium_bar"
        android:focusable="true" />

    <ImageView
        android:id="@+id/Messages_Button"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:clickable="true"
        android:contentDescription="@string/messages_button"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/messages_bar"
        android:focusable="true" />
</LinearLayout>

1 Ответ

0 голосов
/ 04 января 2019

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

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

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

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

для вашего случая: попробуйте 1 горизонтальный LinearLayout с 3 детьми (изображение). установите все веса на 1. Затем, независимо от размера экрана, они заполнят верхнюю часть экрана одинаковым размером.

...