5

我在 API 21+ 上遇到图像显示问题,但在较低的设备和 API 22+ 上一切正常。我正在使用 Gradle Plugin 1.5,所以我的build.gradle样子是这样的:

// Gradle Plugin 1.5  
 android {  
   defaultConfig {  
     generatedDensities = []  
  }  

  // This is handled for you by the 2.0+ Gradle Plugin  
  aaptOptions {  
    additionalParameters "--no-version-vectors"  
  }  
 }  

XML 中的图像视图:

<ImageView
   android:id="@+id/landing_img_slide"
   android:layout_width="225dp"
   android:layout_height="225dp"
   android:layout_centerHorizontal="true"
   android:scaleType="centerCrop" />

Java 代码:

ImageView iconView = (ImageView) itemView.findViewById(R.id.landing_img_slide);
iconView.setImageResource(R.drawable.laptopscreen);

下面的屏幕截图将显示ImageViewVectorDrawable 与 Pre-lollipop 和 Marshmallow 一起正常工作,但在 Android 5.0.1 中显示模糊图像

安卓 4.4.4 安卓 4.4.4 截图

安卓 5.0.1

安卓 5.0.1 截图

安卓 6.0.1

安卓 6.0.1 截图

4

1 回答 1

3

这与 ImageView 中的 scaleType 有关,当涉及到 VectorDrawables 时,它在这些不同的 API 级别上做不一致的事情。

有一个 scaleType 在缩放时似乎始终提供清晰的图像:android:scaleType="fitXY"但是使用它时,您必须确保 ImageView 具有与 Vector Drawable 相同的纵横比(例如,如果您将 fitXY 与方形 VectorDrawable 和矩形 ImageView 一起使用它会将图像拉伸)。

或者,您可以通过设置更改 VectorDrawable 本身的大小

<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="225dp"
android:height="225dp"
.../>

通过这样做,ImageView 中将不需要缩放。

于 2016-03-15T16:26:49.583 回答