SVG становится размытым при увеличении в ImageView (Android) - PullRequest
1 голос
/ 16 мая 2019

Я пытаюсь добавить изображение SVG в AppCompatImageView.Изображение должно быть полноэкранным фоном моего приложения.Это очень широкое изображение, которое должно быть масштабировано до высоты экрана устройства.Ширина изображения просто сокращается в зависимости от ширины экрана устройства.Проблема, с которой я сталкиваюсь, заключается в том, что изображение SVG становится размытым и пикселированным при увеличении, что не должно происходить, поскольку это SVG.

Базовая настройка

  • Android-проектс minSdkVersion 21
  • SVG должен быть загружен в AndroidX AppCompatImageView в ConstraintLayout
  • SVG находится в папке drawable и устанавливается непосредственно в файле макета xml с помощью app:srcCompat
  • vectorDrawables.useSupportLibrary = true включен в приложении Gradle

Я пробовал несколько разных изображений SVG, чтобы исключить вероятность того, что мой SVG был сломан.Я пробовал разные варианты преобразования SVG в VectorDrawable, включая Vector Asset Studio Android Studio и несколько внешних конвертеров.Я даже попытался создать подкласс AppCompatImageView и выполнить масштабирование вручную с помощью матрицы scaleType, рассчитав коэффициент масштабирования на основе размера экрана и применив масштабируемую матрицу к отрисовке.

<androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    <androidx.appcompat.widget.AppCompatImageView
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:scaleType="fitXY"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:srcCompat="@drawable/background"
            app:layout_constraintDimensionRatio="w,651:160"/>

</androidx.constraintlayout.widget.ConstraintLayout>

Ожидаемое поведение будет таким, что изображение SVGмасштабируется без каких-либо серьезных потерь качества.Фактическое поведение таково, что оно становится пиксельным и размытым.

...