Problem bei Vektorgrafiken

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Problem bei Vektorgrafiken

    Moin,

    ich habe mit Illustrator Vektorgrafiken erstellt diese dann als svg-File gespeichert und in mein Projekt geladen. Diese werden nun im Ordner "drawable" als .xml aufgelistet.
    Ich habe eine Activity designt und habe dort einem LinearLayout als Hintergrund eine Vektorgrafik hinterlegt.
    Zudem habe ich ein ImageView, das als Vektorgrafik einen einfachen weißen Kreis hat.

    Ich bekomme nur beim ImageView ein rotes Ausrufezeichen (nicht beim LinearLayout) mit der Meldung, dass ich bitte vectorDrawables.useSupportLibrary = true setzen solle, wenn ich VectorDrawableCompat benutzen möchte.
    Tue ich es nicht, kann ich es trotzdem kompilieren und auf mein Smartphone laden.

    Auf meinem Sony Xperia Ultra (Android 7.0) sieht alles ganz gut aus!
    Auf meinem Samsung Galaxy S4 Mini (Android 4.4.2) ist der Hintergrund vom LinearLayout und auch der Kreis sehr unschaf/verpixelt.


    Setze ich dann vectorDrawables.useSupportLibrary = true (in der build.gradle) stürtzt die App beim S4 Mini immer ab.


    Hätte da jemand eine Lösung parat? Ich vergleiche nämlich immer die App auf beiden Geräten, da ich überall ein gutes Gesamtbild gewährleisten möchte, doch in dem verpixelten Zustand ist es äußerst schade.




    Weitere Infos:
    android {
    compileSdkVersion 28
    defaultConfig {
    applicationId "........."
    minSdkVersion 14
    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'
    }
  • Wenn ich
    vectorDrawables.useSupportLibrary = true
    einfüge, dann klappt es auch beim S4 Mini, nur darf ich einem Layout (z.B. LinearLayout) im Layout-Designer keinen Vector als Background zuweisen. Bei ImageViews klappt es problemlos. Weise ich dann dem Background in der Activity.java eine Vektorgrafik zu, funktioniert es.

    Wie kann es sein, dass es im Designer nicht funktioniert und über die Java-Datei schon???
  • SnogDog schrieb:

    Setze ich dann vectorDrawables.useSupportLibrary = true (in der build.gradle) stürtzt die App beim S4 Mini immer ab.
    Hatte ein ähnlicheds Problem. Workaround damals: Ich habe meine vector_image.xml mit einem selector gewrappt.. selector_vector_image.xml mit :

    <selector xmlns:android="schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/vecotr_image"/>
    </selector>

    dann noch statt android:src --> app:srcCompat
  • Also die xml-Datei sieht dann so aus:

    XML-Quellcode

    1. <LinearLayout
    2. android:id="@+id/layout1"
    3. android:layout_width="match_parent"
    4. android:layout_height="200dp"
    5. android:background="@drawable/ic_bg"
    6. android:orientation="vertical">
    7. ...


    Wenn ich Zeile 5 durch app:srcCompat="@drawable/ic_bg" ersetze, dann ist im Designer und wenn ich die App starte nur ein weißer Hintergrund



    Nehme ich Zeile 5 raus und setze in der Java-Datei den folgenden Code ein, funktioniert es seltsamerweise...

    Java-Quellcode

    1. LinearLayout einLayout = (LinearLayout)
    2. findViewById(R.id.layout1);
    3. einLayout.setBackgroundResource(R.drawable.ic_bg);

    @mrt ich verstehe das nicht ganz, da meine xml-Datei von der Vektorgrafik wie folgt aussieht:

    XML-Quellcode

    1. <vector android:height="24dp" android:viewportHeight="380"
    2. android:viewportWidth="720" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
    3. <path android:fillColor="#70C8DC" android:pathData="M632,380l88,-45l0,-100l-117,-91z"/>
    4. ....
    5. </vector>
    Da habe ich Vector einfach durch Selector ersetzt und im Designer die Zeile app:srcCompat="@drawable/ic_bg" eingefügt. Allerdings habe ich dann auch kein Bild sondern einen weißen Hintergrund.
  • SnogDog schrieb:

    @mrt ich verstehe das nicht ganz, da meine xml-Datei von der Vektorgrafik wie folgt aussieht:

    Sorry hab mich vlt. schlecht ausgedrückt: Lies mal hier:
    stackoverflow.com/questions/31…roid-vector-compatibility
    und
    stackoverflow.com/questions/36…les-on-pre-lollipop-crash

    Du könntest das LinearLayout in der layout.xml durch
    <android.support.v7.widget.LinearLayoutCompat ....mal ausprobieren.