调整为Lagre比例时,Android Vector Drawables变得模糊

时间:2018-11-07 09:29:52

标签: android android-layout user-interface android-vectordrawable

我正在尝试使用此世界地图svg,但是当我调整矢量大小以查看新加坡时,它并没有缩放。地图变得模糊。更具体地说,我将imageView的宽度和高度设置为36000dp。
这是矢量抽签的宽度和高度:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="2000dp"
    android:height="1001dp"
    android:viewportWidth="2000"
    android:viewportHeight="1001">


在我的布局文件中,我已经使用app:srcCompat而不是src:。

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:background="#3A6F5C">

    <ImageView
        android:id="@+id/Map_svg"
        android:layout_width="36000dp"
        android:layout_height="36000dp"
        app:srcCompat="@drawable/ic_world_map"
        />

</android.support.constraint.ConstraintLayout>  


 这是我的gradle文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        vectorDrawables.useSupportLibrary = true
        applicationId "com.example.alan_lin.flora_shipanimation"
        minSdkVersion 22
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

在放大时如何防止其变得模糊?谢谢

1 个答案:

答案 0 :(得分:0)

我尝试了您共享的SVG,但是它太复杂了,无法由Android处理,当应用程序尝试在运行时加载它时说STRING_TOO_LARGE int堆栈跟踪时,该应用程序崩溃了。

对于您的解决方案,我建议对此类非常复杂的SVG使用PNG。

另外两个注释:

  1. 如果您使用的是普通大小矢量,请不要忘记将android:scaleType属性设置为ImageView
  2. 不要忘记在您的Application扩展名中添加以下代码:

     public class App extends Application {
    
     static {
         AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
     }
     ...