Я пытаюсь добавить изображение 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масштабируется без каких-либо серьезных потерь качества.Фактическое поведение таково, что оно становится пиксельным и размытым.