新しい VectorDrawableCompat を使用して、Android Vector 形式に変換された SVG を処理しようとしています。Android Developer Blog Android Support Library 23.2に記載されているセットアップ手順に従いましたが、その方法でベクター型ドローアブルを表示できます。ほとんどの場合、これはアプリ内のほとんどのアイコン/画像を表示する必要がある方法ですが、頻繁に変更される可能性があるサーバーから特定の画像リストをロードする必要があります。これの主な理由は、アイコンを変更/追加するためだけにアプリに更新を投稿する必要がないようにするためです。
テストとして、Assets から同じ形式 (Android Vector Drawable 形式) を読み込もうとしています。VectorDrawableCompat が xml の属性セットを生成しようとすると、タグの属性を引き出すために、キャストしようとしてランタイム例外が発生します。 XmlPullAttributes から XmlBlockParser へ:
java.lang.RuntimeException: java.lang.ClassCastException: android.util.XmlPullAttributes cannot be cast to android.content.res.XmlBlock$Parser
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2581)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2641)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1398)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5849)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:763)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:653)
Caused by: java.lang.ClassCastException: android.util.XmlPullAttributes cannot be cast to android.content.res.XmlBlock$Parser
at android.content.res.Resources.obtainAttributes(Resources.java:1896)
at android.support.graphics.drawable.VectorDrawableCommon.obtainAttributes(VectorDrawableCommon.java:43)
at android.support.graphics.drawable.VectorDrawableCompat.inflate(VectorDrawableCompat.java:469)
at android.support.graphics.drawable.VectorDrawableCompat.createFromXmlInner(VectorDrawableCompat.java:436)
at com.mobile.hilton.amentiesicontestr.MainActivity.createFromXmlStream(MainActivity.java:65)
at com.mobile.hilton.amentiesicontestr.MainActivity.onCreate(MainActivity.java:33)
at android.app.Activity.performCreate(Activity.java:6570)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2534)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2641)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1398)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5849)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:763)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:653)
VectorDrawable XML が参照する Android 名前空間が見つからないため、不平を言っていると思います。通常、ドローアブルは事前にコンパイルされていますが、この場合、私の xml はそうではありません。これを回避する方法、またはこれを機能させる方法について何か考えはありますか? Android のドキュメントから何かが抜けているのかもしれませんが、res/drawables の外から VectorDrawable をサポートする方法が見つかりませんでした。どんな助けでも感謝します、事前に感謝します。