Android Vector Drawables становятся размытыми при изменении размера до масштаба лагре - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь использовать эту карту мира 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">


В моем файле Layout я уже использую 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 голосов
/ 10 ноября 2018

Я попробовал SVG, которым вы поделились, но он слишком сложен, чтобы его обрабатывал Android, приложение вылетает при попытке загрузить его во время выполнения, говоря STRING_TOO_LARGE в трассировке стека.

Для вашего решения я бы предложил использовать PNG для этих видов очень сложных SVG.

Еще две ноты:

  1. Если вы используете вектор нормального размера, не забудьте установить атрибут android:scaleType на ImageView.
  2. Не забудьте добавить эту строку кода в расширение Application:

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