在ImageView(Android)中放大时,SVG会变得模糊

时间:2019-05-16 06:44:21

标签: android android-layout svg imageview scaling

我正在尝试将SVG图像添加到AppCompatImageView。该图像应为我的应用程序的全屏背景。这是一个非常宽的图像,应该放大到设备的屏幕高度。只需根据设备的屏幕宽度剪切图像的宽度。 我面临的问题是SVG图像在放大时会变得模糊和像素化,因为它是SVG,所以不应该发生这种情况。

基本设置

  • 具有minSdkVersion 21的Android项目
  • SVG应该在ConstraintLayout的AndroidX AppCompatImageView中加载
  • SVG位于drawable文件夹中,并通过app:srcCompat直接在xml布局文件中设置
  • 在应用程序Gradle中启用了
  • 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图像按比例放大而没有任何重大质量损失。实际行为是它变得像素化和模糊。

0 个答案:

没有答案