Aggiorna la libreria di supporto Android alla 23.2.0 causa errore: XmlPullParserException Riga file XML binario n. 17 Il tag <vector> richiede viewportWidth> 0


87

Provo ad aggiornare la mia libreria di supporto fino alla 23.2.0 e affronto questo errore:

Exception while inflating <vector>
org.xmlpull.v1.XmlPullParserException: Binary XML file line #17<vector> tag requires viewportWidth > 0
at android.support.graphics.drawable.VectorDrawableCompat.updateStateFromTypedArray(VectorDrawableCompat.java:535)
at android.support.graphics.drawable.VectorDrawableCompat.inflate(VectorDrawableCompat.java:472)
at android.support.graphics.drawable.VectorDrawableCompat.createFromXmlInner(VectorDrawableCompat.java:436)
at android.support.v7.widget.AppCompatDrawableManager$VdcInflateDelegate.createFromXmlInner(AppCompatDrawableManager.java:829)
at android.support.v7.widget.AppCompatDrawableManager.loadDrawableFromDelegates(AppCompatDrawableManager.java:303)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:178)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:173)
at android.support.v7.widget.TintTypedArray.getDrawable(TintTypedArray.java:60)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:254)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:196)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
at com.chotot.vn.v2.activities.MainActivity.onCreate(MainActivity.java:121)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)

E

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.chotot.vn.dev/com.chotot.vn.v2.activities.MainActivity}: android.view.InflateException: Binary XML file line #13: Error inflating class android.support.v7.widget.Toolbar
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #13: Error inflating class android.support.v7.widget.Toolbar
at android.view.LayoutInflater.createView(LayoutInflater.java:620)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
at com.chotot.vn.v2.activities.MainActivity.onCreate(MainActivity.java:121)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
at com.chotot.vn.v2.activities.MainActivity.onCreate(MainActivity.java:121)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/abc_ic_ab_back_material.xml from drawable resource ID #0x7f020016
at android.content.res.Resources.loadDrawable(Resources.java:2091)
at android.content.res.Resources.getDrawable(Resources.java:695)
at android.support.v7.widget.TintResources.superGetDrawable(TintResources.java:48)
at android.support.v7.widget.AppCompatDrawableManager.onDrawableLoadedFromResources(AppCompatDrawableManager.java:374)
at android.support.v7.widget.TintResources.getDrawable(TintResources.java:44)
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:323)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:180)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:173)
at android.support.v7.widget.TintTypedArray.getDrawable(TintTypedArray.java:60)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:254)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:196)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
at com.chotot.vn.v2.activities.MainActivity.onCreate(MainActivity.java:121)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #17: invalid drawable tag vector
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:897)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:837)
at android.content.res.Resources.loadDrawable(Resources.java:2087)
at android.content.res.Resources.getDrawable(Resources.java:695)
at android.support.v7.widget.TintResources.superGetDrawable(TintResources.java:48)
at android.support.v7.widget.AppCompatDrawableManager.onDrawableLoadedFromResources(AppCompatDrawableManager.java:374)
at android.support.v7.widget.TintResources.getDrawable(TintResources.java:44)
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:323)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:180)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:173)
at android.support.v7.widget.TintTypedArray.getDrawable(TintTypedArray.java:60)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:254)
at android.support.v7.widget.Toolbar.<init>(Toolbar.java:196)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:594)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:696)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:267)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:129)
at com.chotot.vn.v2.activities.MainActivity.onCreate(MainActivity.java:121)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)

Mio activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <fragment
        android:id="@+id/f_actionbar"
        android:name="com.chotot.vn.fragments.ActionBarFragment"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

    <android.support.v7.widget.Toolbar
        android:id="@+id/main_tool_bar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:layout_alignParentTop="true"
        android:background="@color/action_bar_bg">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <include
                android:id="@+id/main_action_bar_layout"
                layout="@layout/layout_actionbar_custom_search"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:layout_gravity="top" />

            <LinearLayout
                android:id="@+id/main_action_bar_layout_content"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@id/main_action_bar_layout"
                android:orientation="vertical" />
        </RelativeLayout>
    </android.support.v7.widget.Toolbar>

    <FrameLayout
        android:id="@+id/layout_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/main_tool_bar" />

</RelativeLayout>

Come posso ripararlo?



30
Sto iniziando a rinunciare allo sviluppo di Android come un & ** & # $ intero! Non riesco a credere di aver sprecato gran parte della mia vita come singola persona che aggiorna a una nuova versione dell'SDK per correggere il bug che introducono nella versione precedente e ora questo! ARRGGGGHHH!
Neon Warge

1
Ho optato per API v23.1.0: P
Neon Warge

4
avendo lo stesso problema 24.0.0se qualcuno ha suggerimenti su di esso, per favore condividilo, ho davvero provato ogni cosa.
wviana

1
@NeonWarge ... Sono stato in giro un paio di volte ormai. Queste risposte non fanno nulla per me. Sono sicuro che inizi a sentire dolore
Jan Jansz

Risposte:


55

Usa questo codice nel tuo file build.gradle

    //for Gradle Plugin 2.0+  
 android {  
   defaultConfig {  
     vectorDrawables.useSupportLibrary = true  
    }  
 }

Se stai usando Gradle 1.5, userai invece

defaultConfig {
        generatedDensities = []
    }

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

Penso che stiano usando un compatto vettoriale disegnabile sotto in altre lib. Trovate qui


7
@ MAY3AM mi dispiace non aver provato su Eclipse. Pensavo che eclipse non fosse aggiornato perché lo stai usando.
Ajinkya

6
Ciò che alla fine ha risolto il mio problema è stata la risposta di @ wonglik, per impostare: buildToolsVersion "23.0.2".
Sid

1
Ricorda di usare app: srcCompat invece di android: src nell'xml per usare i disegnatori vettoriali su <21 dispositivi.
Timo

1
questo non funziona per me. la mia configurazione è la seguente: buildToolsVersion "23.0.2"; classpath 'com.android.tools.build:gradle:2.0.0-beta6'; defaultConfig {vectorDrawables.useSupportLibrary = true}
Allen Vork

6
Questa soluzione non funziona per me. Could not find property 'vectorDrawables' on ProductFlavor_Decorated
Mulgard

28

Puoi anche eseguire l'aggiornamento a 23.4.0

dependencies {
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.android.support:design:23.4.0'
}

e utilizza un flag per abilitare manualmente questa funzionalità:

static
{
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}

all'interno dell'attività che utilizza i vettori.

Fonte: età dei vettori


la chiamata statica all'interno di alcune attività di base risolverà il problema per tutti gli sviluppatori che stanno lottando con vectorDrawables.useSupportLibrary = true, quindi +1 per questa risposta.
Stoycho Andreev

Oh, ♫ è una specie di magia ♫. Sto usando com.android.support:appcompat-v7:25.3.1l'app in esecuzione nell'API 19. La configurazione predefinita è vectorDrawables.useSupportLibrary = truema si bloccava durante l'impostazione di ImageSwitcher disegnabile con un vettore. Infine con questa dichiarazione statica, sono in grado di impostareImageResource con il vettore drawable. Sembra che Android SDK sia allo stesso tempo sorprendente e immaturo.
Junior Mayhé

26

Si prega di rimuovere l'appcompat gradle ( compile "com.android.support:appcompat-v7:23.2.0") e sostituirlo con il design di supporto ( compile 'com.android.support:design:23.1.1') questo risolverà il problema


Queste modifiche devono essere apportate anche con 23.1.1 defaultConfig {generatedDensities = []} // Questo è gestito per te dal plug-in Gradle 2.0+ aaptOptions {additionalParameters "--no-version-vectors"}
Ravi

20
ma cosa succede se si desidera utilizzare l'ultima libreria appcompact ??
Ajinkya

23

Sui dispositivi pre-lecca-lecca è necessario creare un selettore per utilizzare VectorDrawable altrove da ImageView

app:srcCompat="@drawable/your_vector_drawable"

Selettore:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/your_vector_drawable" />

</selector>

Quindi puoi passare questo selettore, ad esempio per TextView drawableLeft / drawableRight in xml

<TextView
        android:gravity="center_vertical"
        android:drawableLeft="@drawable/selector_your_vector_drawable"
        android:drawableStart="@drawable/selector_your_vector_drawable"
        android:drawableRight="@drawable/selector_your_vector_drawable"
        android:drawableEnd="@drawable/selector_your_vector_drawable"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/your_string" />

Indipendentemente dalle versioni in build.gradle, questa soluzione funzionerà
PsyGik

Ho vectorDrawables.useSupportLibrary = true nell'app build.gradle e utilizzo compileSdkVersion 25 e buildToolsVersion "25.0.0" e le revisioni delle librerie di dipendenze 25.0.0 ma non ho aiutato a usareSupportLibrary, questa è la soluzione migliore grazie @ n1ck !!!
mr.boyfox

Questa soluzione non rompe anche sulla libreria di supporto 25.00 e 24, l'ho testata su tablet Android 4.2.2 (non supporta Google Play) e questa soluzione funziona a meraviglia!
mr.boyfox

Questo funziona fino ad oggi [buildtools 25+] - nient'altro funziona per gli android:drawableattributi in xml: s che fanno riferimento ai disegnatori vettoriali. È questo o l'impostazione dello sfondo disegnabile programmaticamente. Wth!
Pär Nils Amsen

22

Invece di ContextCompat.getDrawable , usa semplicemente AppCompatDrawableManager.get (). GetDrawable .

Questo dovrebbe funzionare su versioni successive alla 23. +


1
Sto cercando di utilizzare il vettore per la visualizzazione personalizzata. Questo funziona per me. Ma solo chiamare direttamente AppCompatDrawableManager.get().getDrawable(getContext(), R.drawable.drawable_xyz);tramite codice. Non sono sicuro di come funzioni se dichiarato da xml.
Robert

1
questo cambiamento da solo ha risolto il problema per me. grazie.
albert c braun

1
Anche questo ha risolto il problema. Grazie compagno !
rana

1
Inoltre puoi usare:AppCompatResources.getDrawable(getContext(), R.drawable.drawable_xyz);
Warcello

19

Utilizzando:

compileSdkVersion 24
buildToolsVersion '24.0.1'

Sono andato in crash in fase di esecuzione finché non ho rimosso la linea

  defaultConfig {
    vectorDrawables.useSupportLibrary = true
  }

dalla mia applicazione guild.gradle

Questo sembra confondere la versione più recente dell'SDK

Spero che questo salvi il mal di testa a qualcun altro


Questo mi aiuta.
Sergey Shustikov

1
La rimozione di ectorDrawables.useSupportLibrary ha interrotto gli arresti anomali sul mio dispositivo 4.4.2.
Acapulco

Wow funziona davvero! Ma perché c'è un fastidioso errore di lanugine con app:srcCompat To use VectorDrawableCompat, you need to set android.defaultConfig.vectorDrawable.useSupportLibrary = true.? È molto confuso!
HendraWD

12

Ho risolto questo problema sostituendo

dependencies {

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

compile 'com.android.support:design:23.2.0'
}

con

dependencies {
compile 'com.android.support:appcompat-v7:23.0.1'

compile 'com.android.support:design:23.0.1'
}

10

Un mix di alcune delle soluzioni di cui sopra ha funzionato per me. Ecco cosa ho fatto -

Cambia versione Gradle da 1.3.0 a 1.5.0 in build.gradlesu progetti come questo

classpath 'com.android.tools.build:gradle:1.5.0'

Aggiornamento di seguito le cose in build.gradledi app

buildToolsVersion "23.0.2"

Dipendenze del modulo aggiornate da 23.2.0 a 23.4.0:

compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
compile 'com.android.support:support-vector-drawable:23.4.0'
compile 'com.android.support:animated-vector-drawable:23.4.0'

Ora, a seconda della versione gradle che stai utilizzando, utilizza uno dei seguenti due frammenti. Dato che sto usando gradle 1.5.0, ho usato questo -

defaultConfig {
            generatedDensities = []
            }

    aaptOptions {
        additionalParameters "--no-version-vectors"
        }

Ma se stai usando Gradle 2.1.0, usalo invece

       defaultConfig {  
         vectorDrawables.useSupportLibrary = true  
         }

E poi sei a posto. L'ho testato sia in xml che a livello di programmazione. Nel file xml, l'ho usato nel mio ImageView -

app:srcCompat="@drawable/anim_droid"
// where droid_anim is an animated-vector file containing set of animations to animate different paths of the SVG file

E per farlo in modo programmatico, ho usato questo:

    imageView.setImageResource(R.drawable.anim_droid);
    Drawable drawable = imageView.getDrawable();
    if (drawable instanceof Animatable) {
      ((Animatable) drawable).start();
    }

Spero che sia d'aiuto! Saluti :)


9

Ho avuto lo stesso problema. Per me effettivamente l'aggiornamento della versione degli strumenti di build ha aiutato:

buildToolsVersion "23.0.2"

9

Affronta il problema di arresto anomalo su API 19 durante l'aggiornamento a 23.2.0. Ho risolto questo problema aggiornando la versione alla 23.2.1. (L'ultima versione quando rispondi a questa domanda. Prova ad aggiornare all'ultima, forse Google è stata risolta)

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

1
Perché hai bisogno di compilare il tutto 'com.android.support:support:23.2.1'?
IgorGanapolsky

L'ultima per il momento compila 'com.android.support:support-v4:23.3.0' compile 'com.android.support:appcompat-v7:23.3.0' compile 'com.android.support:design:23.3.0 '
Alexandr

7

Assicurati di utilizzare anche l'ultima buildToolsVersion(scarica dal gestore SDK se necessario).

Gradle campione:

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.0"
    defaultConfig {
        ...
        vectorDrawables.useSupportLibrary = true
    }
    dependencies {
        ...
        compile 'com.android.support:appcompat-v7:24.0.0'
        ...
    }
}

3
buildToolsVersion "24.0.0" save my day :)
NullPointer

Questa è la risposta corretta per chi sta tentando di aggiornare per compilare sdk 24 ma riceveva ancora un errore sui dispositivi 4.x.
fillobotto

4

In Gradle (gradle: 2.1.0):

defaultConfig {
    vectorDrawables.useSupportLibrary = true
}

Nel layout:

<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:srcCompat="@drawable/you_vector_drawable"/>

3

Ho avuto questo problema, ma l'aggiornamento alle versioni build: grade:

classpath 'com.android.tools.build:gradle:1.5.0'

E:

buildToolsVersion "23.0.2"

Successo!



2

Sono stato soppiantato da questo identico problema quando ho creato una nuova versione della mia app. La mia dipendenza da appcompact era impostata sull'aggiornamento automatico.

compile 'com.android.support:appcompat-v7:23+'

Quindi non appena sarà disponibile una nuova versione (in questo caso la 23.2.0) sostituirà quella vecchia con cui stavi costruendo.

Quindi puoi tornare alla versione precedente della libreria appcompat (correzione rapida):

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

Oppure mantieni la versione corrente della libreria e usa la risposta di Ajinkya come spiegato da Google nella nota di rilascio della versione 23.2.0 . Se opti per la versione successiva, non dimenticare di aggiornare il tuo strumento di creazione gradle alla versione 1.5.0 o non potresti utilizzare i nuovi parametri come generatedDensities:

classpath 'com.android.tools.build:gradle:1.5.0'

2

Di fronte allo stesso problema, questa soluzione lo ha risolto.

Nella tua classe fallo e basta

public class YourClass extends xxx {
    static {
        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
    }
    ...
}

e aggiungilo anche nel tuo file gradle, se non ancora.

defaultConfig {
    vectorDrawables.useSupportLibrary = true
}

1

L'ho risolto impostando ..

compile 'com.android.support:appcompat-v7:24.1.1'
compile 'com.android.support:design:24.1.1' and buildToolsVersion '24.0.0'

Ho provato ma non ha funzionato per me ... Utilizzo di Android-IDE
Karyuu Ouji

1

Ho incontrato anche questo problema, quello che ho fatto: cambiare

compileSdkVersion 24
buildToolsVersion "22.0.1"

per

compileSdkVersion 24
buildToolsVersion "24.0.1"

1

Inserisci in build.gradle (Modulo: app):

android {  
  defaultConfig {  
    vectorDrawables.useSupportLibrary = true  
  }  
}

dependencies {
    implementation 'com.android.support:appcompat-v7:26.1.0'
}

Successivamente, utilizza il codice sottostante, in AppActivity:

 AppCompatResources.getDrawable(getContext(), R.drawable.ic_your);

Dove disponibile utilizzare l' app: srcCompat invece android: src e android: background , nel file di risorse XML


0

Ho avuto questo problema, ma l'aggiornamento alle versioni seguenti lo ha risolto per me:

classpath 'com.android.tools.build:gradle:1.5.0'

E:

buildToolsVersion "23.0.2"

Dipendenze del modulo:

compile 'com.android.support:appcompat-v7:23.2.0'
compile 'com.android.support:support-v4:23.2.0'

compile 'com.google.android.gms:play-services:8.4.0'

0

Ho risolto il problema sostituendo

compile 'com.android.support:appcompat-v7:23.2.0'
compile 'com.android.support:support-v4:23.2.0'

con

compile 'com.android.support:appcompat-v7:23.0.2'
compile 'com.android.support:support-v4:23.0.2'

0

Ho ricevuto lo stesso errore in Android Studio 2.2 dopo aver aggiornato le mie dipendenze Gradle alle ultime versioni ma ho dimenticato di aggiornare buildToolsVersion del mio progetto.

Ho cambiato:

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

per:

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

Mentre buildToolsVersion è rimasto "22.0.1"così:

buildToolsVersion "22.0.1"

Quindi tutto quello che ho fatto è stato aggiornare buildToolsVersion a 24 in questo modo:

buildToolsVersion "24"

poiché è stato precedentemente scaricato con SDK Manager. Quindi controlla l'ultima versione buildToolsVersiondi SDK Manager e verifica se corrisponde alla versione delle dipendenze.

Spero che questo aiuti qualcuno.


0

Per me ciò che ha funzionato ... è stato rimuovere la "s" da "https" nella dichiarazione dello spazio dei nomi del mio disegnabile vettoriale xml.

Quel XML proveniva dalla documentazione di Google Android stessa. Puoi vedere nello screenshot che xmlns è "http" ma nella versione sottoposta a copiaportabile è "https".

Ciò interromperà gli errori di rendering nel visualizzatore di risorse vettoriali, ma non vedrai ancora nulla, per motivi che non capisco. Dovrebbe sembrare una chiave inglese.

Se fai clic con il pulsante destro del mouse sulla cartella drawables e su "Nuovo -> Asset vettoriale" ottieni una risorsa icona Android che funziona.

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:viewportWidth="24.0"
        android:viewportHeight="24.0">
    <path
        android:fillColor="#FF000000"
        android:pathData="M6,18c0,0.55 0.45,1 1,1h1v3.5c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5L11,19h2v3.5c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5L16,19h1c0.55,0 1,-0.45 1,-1L18,8L6,8v10zM3.5,8C2.67,8 2,8.67 2,9.5v7c0,0.83 0.67,1.5 1.5,1.5S5,17.33 5,16.5v-7C5,8.67 4.33,8 3.5,8zM20.5,8c-0.83,0 -1.5,0.67 -1.5,1.5v7c0,0.83 0.67,1.5 1.5,1.5s1.5,-0.67 1.5,-1.5v-7c0,-0.83 -0.67,-1.5 -1.5,-1.5zM15.53,2.16l1.3,-1.3c0.2,-0.2 0.2,-0.51 0,-0.71 -0.2,-0.2 -0.51,-0.2 -0.71,0l-1.48,1.48C13.85,1.23 12.95,1 12,1c-0.96,0 -1.86,0.23 -2.66,0.63L7.85,0.15c-0.2,-0.2 -0.51,-0.2 -0.71,0 -0.2,0.2 -0.2,0.51 0,0.71l1.31,1.31C6.97,3.26 6,5.01 6,7h12c0,-1.99 -0.97,-3.75 -2.47,-4.84zM10,5L9,5L9,4h1v1zM15,5h-1L14,4h1v1z"/>

Sia il mio design che il mio appcompat-v7 usano 23.2.1 e buildToolsVersion 23.0.2.

Questo appena dentro. La chiave generata dal file dell'interfaccia "icone dei materiali" -> nuovo -> asset vettoriale -> icona del materiale (quindi fai clic sull'icona e seleziona chiave inglese) è:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:viewportWidth="24.0"
        android:viewportHeight="24.0">
    <path
        android:fillColor="#FF000000"
        android:pathData="M22.7,19l-9.1,-9.1c0.9,-2.3 0.4,-5 -1.5,-6.9 -2,-2 -5,-2.4 -7.4,-1.3L9,6 6,9 1.6,4.7C0.4,7.1 0.9,10.1 2.9,12.1c1.9,1.9 4.6,2.4 6.9,1.5l9.1,9.1c0.4,0.4 1,0.4 1.4,0l2.3,-2.3c0.5,-0.4 0.5,-1.1 0.1,-1.4z"/>
</vector>

Questa utility in linea mi ha fatto bene. Usa Chrome. Converte SVG in disegnabili vettoriali Android.


0

il problema era:

/VdcInflateDelegate: Exception while inflating <vector>

soluzione:

cambiato compileSdkVersion 23 buildToolsVersion "23.0.2" incompileSdkVersion 24 buildToolsVersion "24.0.2"

codice soluzione:

compileSdkVersion 24
buildToolsVersion '24.0.1'

utilizzando questo codice sopra ho risolto il problema


0

Basta aggiungere la seguente dipendenza nel tuo build.gradle. questo risolverà il tuo problema. Sto usando 25.0.2 buildToolsVersion.

compila "com.android.support:support-vector-drawable:25.3.0"


0

Ho cambiato FragmentActivity in AppCompatActivity, il problema è risolto. Il mio ambiente è:

compileSdkVersion = 25
buildToolsVersion = "25.0.0"
supportVersion = "25.2.0"

0

Nel mio caso questa soluzione ha funzionato:

Uso

android:theme="@style/TextLabelWhite"

proprio come nel tuo xml. Cambia lo stile genitore nel tuo stile AppTheme, come:

<style name="TextLabelWhite" parent="AppTheme">

0

Anche se ho il supporto del vettore abilitato nel mio gradle e ho l'ultima versione di gradle, strumenti di compilazione, libreria di supporto e Android Studio, ho comunque ricevuto l'errore.

Ecco una soluzione per il mio caso:

AppCompatDrawableManager.get().getDrawable(getContext(), R.drawable.drawable_xyz);

per sopprimere l'avviso di lanugine aggiungere questo @SuppressLint("RestrictedApi")


0

prova a usare: compila "com.android.support:design:23.1.1"

invece di: compila "com.android.support:appcompat-v7:23.2.0"


0

Osservato anche su buildToolsVersion '26 .0.2 '

Il downgrade a buildToolsVersion '25 .0.3 'ha funzionato .

Per buildToolsVersion '26 .0.2 ': Prova AppCompat per widget Esempio: TextView -> android.support.v7.widget.AppCompatTextView (per il supporto della versione Android precedente) Si osserva anche su dispositivi di fascia bassa quando il dispositivo non è in grado di gonfiare i drawable a causa della memoria carenza (anche se il drawable esiste nella directory res-> drawable): Prova a cambiare il tuo drawable con altri meno complessi .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.