显示在ANDROID NOUGAT的Blurr图象的传染媒介Drawables

时间:2017-06-21 06:45:37

标签: android

我是android新手。我试图在我的应用程序中使用矢量drawables。以下代码在棉花糖版本之前工作正常。在较低版本上也可以正常工作。但是当我在Nougat上运行它时,图像会变得模糊。

我的build.gradle(项目)版本是2.0+,并在我的build.gradle(app)中添加了以下代码

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 25
        vectorDrawables.useSupportLibrary = true
    }

支持版本是:

compile 'com.android.support:appcompat-v7:25.3.1'

此外,我在onCreate方法

中添加了以下代码
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);

在我的XML中:

<ImageView
    android:layout_width="200dp"
    android:layout_height="200dp"
    app:srcCompat = "@drawable/ic_camera_black_24dp"/>

1 个答案:

答案 0 :(得分:1)

我对你的代码玩了一下,我发现的问题似乎是问题似乎是由于使用了相同图标的不同大小。在特定情况下,您的ImageView带有200x200dp的矢量图标,并使用方法TextView附加到setCompoundDrawablesRelativeWithIntrinsicBounds的相同图标,该方法使用定义的width向量和height确定其大小。 (在你的情况下为24dp)

此行为背后的主要原因是此Google工程师的回复,您可以找到here

因此,如果您不希望将来出现问题,则不应使用大小为200x200dp和24x24dp的相同矢量图标,因为系统会创建一些缓存的Bitmap(以优化性能)不会满足您所需的尺寸,这可能会导致某些设备上的图像模糊。

如果您需要完全不同尺寸的完全相同的图标,请使用多个Vector drawable。

PS:关于如何将JPEG或PNG转换为矢量绘图的评论问题,我可以说矢量不应该由照片构建(即使可能它非常难和昂贵),矢量很方便只有当你使用小路径时,这才是它们仅用于图标或徽标的原因