我正在尝试将SVG图像添加到AppCompatImageView。该图像应为我的应用程序的全屏背景。这是一个非常宽的图像,应该放大到设备的屏幕高度。只需根据设备的屏幕宽度剪切图像的宽度。 我面临的问题是SVG图像在放大时会变得模糊和像素化,因为它是SVG,所以不应该发生这种情况。
基本设置
AppCompatImageView
中加载app:srcCompat
直接在xml布局文件中设置vectorDrawables.useSupportLibrary = true
我尝试了多个不同的SVG图像,以排除SVG损坏的可能性。我尝试了将SVG转换为VectorDrawable的其他选项,包括Android Studio的Vector Asset 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图像按比例放大而没有任何重大质量损失。实际行为是它变得像素化和模糊。