Как центрировать не квадратное растровое изображение в списке слоев для экрана запуска в макете? - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь расположить логотип моей компании по центру экрана запуска приложения.

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

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

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

Требования к стартовому экрану с неквадратным логотипом :

  • без искажений
  • все изображение видно
  • использует bitmap
  • вертикально и горизонтально по центру

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

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:drawable="@android:color/white"/>
        <item>
            <bitmap
                android:gravity="center"
                android:src="@mipmap/logo"
            />
        </item>
    </layer-list>

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

Чтобы исправить это, я попытался добавить android:scaleType="center", который исправил обрезку, но исказил изображение.

Эта проблема звучит как распространенная проблема, однако я все еще не могу исправить свой код и достичь желаемого результата.

Есть ли какие-то проблемы, потому что моя версия Android не самая последняя? Разрешение png может вызвать проблемы (они еще не изменены)?

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

1 Ответ

1 голос
/ 09 апреля 2019

Я попробую этот способ сохранить его в центре. Если вы используете инструмент абстрактного дизайна, чтобы увидеть, как устроен дизайн, я бы получил фиксированное местоположение снизу телефона и зафиксировал вид на этой высоте, имея в виду, что телефон имеет 5 дюймов.

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

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">

    <ImageView
            android:id="@+id/image_constraint"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@mipmap/ic_launcher"
            android:contentDescription="Image View"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintStart_toStartOf="parent" app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"/>

</android.support.constraint.ConstraintLayout>
...