使用两个点值的向量在 Android 5.0.1 和 5.0.2 上崩溃?
Vectors using two point values crash on Android 5.0.1 and 5.0.2?
我正在使用 Android 下载站点 here 中的一些矢量。
像 contact phone icon 这样的图标。
并将其放入文件中,如下所述:
<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="@color/grey"
android:pathData="M22 3H2C.9 3 0 3.9 0 5v14c0 1.1.9 2 2 2h20c1.1 0 1.99-.9 1.99-2L24 5c0-1.1-.9-2-2-2zM8 6c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm6 12H2v-1c0-2 4-3.1 6-3.1s6 1.1 6 3.1v1zm3.85-4h1.64L21 16l-1.99 1.99c-1.31-.98-2.28-2.38-2.73-3.99-.18-.64-.28-1.31-.28-2s.1-1.36.28-2c.45-1.62 1.42-3.01 2.73-3.99L21 8l-1.51 2h-1.64c-.22.63-.35 1.3-.35 2s.13 1.37.35 2z"/>
</vector>
三星 S4 和 HTC One(5.0.1 和 5.0.2)有问题
11-05 13:37:34.380 uk.co.test.test W/System.err: Caused by: android.content.res.Resources$NotFoundException: File res/drawable-xxhdpi-v21/ic_grey_dark_absence_24dp.xml from drawable resource ID #0x7f020071
at android.content.res.Resources.loadDrawableForCookie(Resources.java:3735)
at android.content.res.Resources.loadDrawable(Resources.java:3603)
at android.content.res.Resources.getDrawable(Resources.java:1852)
at android.content.Context.getDrawable(Context.java:408)
at android.support.v4.content.ContextCompatApi21.getDrawable(ContextCompatApi21.java:26)
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:321)
at android.support.v7.internal.widget.TintManager.getDrawable(TintManager.java:177)
at android.support.v7.internal.widget.TintManager.getDrawable(TintManager.java:170)
at android.support.v7.widget.AppCompatImageHelper.setImageResource(AppCompatImageHelper.java:53)
at android.support.v7.widget.AppCompatImageView.setImageResource(AppCompatImageView.java:74)
at uk.co.test.test.view.MenuItemView.init(MenuItemView.java:42)
at uk.co.test.test.view.MenuItemView.<init>(MenuItemView.java:22)
11-05 13:37:34.380 uk.co.test.test W/System.err: ... 32 more
11-05 13:37:34.380 uk.co.test.test W/System.err: Caused by: java.lang.NumberFormatException: Invalid float: "1.1.9"
at java.lang.StringToReal.invalidReal(StringToReal.java:63)
at java.lang.StringToReal.initialParse(StringToReal.java:160)
at java.lang.StringToReal.parseFloat(StringToReal.java:323)
at java.lang.Float.parseFloat(Float.java:306)
at android.util.PathParser.getFloats(PathParser.java:178)
at android.util.PathParser.createNodesFromPathData(PathParser.java:59)
at android.graphics.drawable.VectorDrawable$VFullPath.updateStateFromTypedArray(VectorDrawable.java:1439)
at android.graphics.drawable.VectorDrawable$VFullPath.inflate(VectorDrawable.java:1421)
at android.graphics.drawable.VectorDrawable.inflateInternal(VectorDrawable.java:542)
at android.graphics.drawable.VectorDrawable.inflate(VectorDrawable.java:458)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1150)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:1063)
at android.content.res.Resources.loadDrawableForCookie(Resources.java:3719)
但是我发现,这是由任何向量值包含两个“.”引起的,例如 1.1.9。如果将上面的矢量更改为篮子图标:
<path
android:fillColor="@color/grey"
android:pathData="M17.21,9l-4.38,-6.56c-0.19,-0.28 -0.51,-0.42 -0.83,-0.42 -0.32,0 -0.64,0.14 -0.83,0.43L6.79,9H2c-0.55,0 -1,0.45 -1,1 0,0.09 0.01,0.18 0.04,0.27l2.54,9.27c0.23,0.84 1,1.46 1.92,1.46h13c0.92,0 1.69,-0.62 1.93,-1.46l2.54,-9.27L23,10c0,-0.55 -0.45,-1 -1,-1h-4.79zM9,9l3,-4.4L15,9H9zm3,8c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2 2,0.9 2,2 -0.9,2 -2,2z"/>
一切正常。
我在 code.google.com/p/android 上找不到报告的错误,我想知道是否有 "change all your vectors" 以外的解决方法?
在 Vector Asset Studio 中创建的相同图标似乎不会遇到此问题。所以我想解决方案是始终使用 Vector Asset Studio 创建矢量 xml
文件。
我正在使用 Android 下载站点 here 中的一些矢量。
像 contact phone icon 这样的图标。
并将其放入文件中,如下所述:
<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="@color/grey"
android:pathData="M22 3H2C.9 3 0 3.9 0 5v14c0 1.1.9 2 2 2h20c1.1 0 1.99-.9 1.99-2L24 5c0-1.1-.9-2-2-2zM8 6c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm6 12H2v-1c0-2 4-3.1 6-3.1s6 1.1 6 3.1v1zm3.85-4h1.64L21 16l-1.99 1.99c-1.31-.98-2.28-2.38-2.73-3.99-.18-.64-.28-1.31-.28-2s.1-1.36.28-2c.45-1.62 1.42-3.01 2.73-3.99L21 8l-1.51 2h-1.64c-.22.63-.35 1.3-.35 2s.13 1.37.35 2z"/>
</vector>
三星 S4 和 HTC One(5.0.1 和 5.0.2)有问题
11-05 13:37:34.380 uk.co.test.test W/System.err: Caused by: android.content.res.Resources$NotFoundException: File res/drawable-xxhdpi-v21/ic_grey_dark_absence_24dp.xml from drawable resource ID #0x7f020071
at android.content.res.Resources.loadDrawableForCookie(Resources.java:3735)
at android.content.res.Resources.loadDrawable(Resources.java:3603)
at android.content.res.Resources.getDrawable(Resources.java:1852)
at android.content.Context.getDrawable(Context.java:408)
at android.support.v4.content.ContextCompatApi21.getDrawable(ContextCompatApi21.java:26)
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:321)
at android.support.v7.internal.widget.TintManager.getDrawable(TintManager.java:177)
at android.support.v7.internal.widget.TintManager.getDrawable(TintManager.java:170)
at android.support.v7.widget.AppCompatImageHelper.setImageResource(AppCompatImageHelper.java:53)
at android.support.v7.widget.AppCompatImageView.setImageResource(AppCompatImageView.java:74)
at uk.co.test.test.view.MenuItemView.init(MenuItemView.java:42)
at uk.co.test.test.view.MenuItemView.<init>(MenuItemView.java:22)
11-05 13:37:34.380 uk.co.test.test W/System.err: ... 32 more
11-05 13:37:34.380 uk.co.test.test W/System.err: Caused by: java.lang.NumberFormatException: Invalid float: "1.1.9"
at java.lang.StringToReal.invalidReal(StringToReal.java:63)
at java.lang.StringToReal.initialParse(StringToReal.java:160)
at java.lang.StringToReal.parseFloat(StringToReal.java:323)
at java.lang.Float.parseFloat(Float.java:306)
at android.util.PathParser.getFloats(PathParser.java:178)
at android.util.PathParser.createNodesFromPathData(PathParser.java:59)
at android.graphics.drawable.VectorDrawable$VFullPath.updateStateFromTypedArray(VectorDrawable.java:1439)
at android.graphics.drawable.VectorDrawable$VFullPath.inflate(VectorDrawable.java:1421)
at android.graphics.drawable.VectorDrawable.inflateInternal(VectorDrawable.java:542)
at android.graphics.drawable.VectorDrawable.inflate(VectorDrawable.java:458)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1150)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:1063)
at android.content.res.Resources.loadDrawableForCookie(Resources.java:3719)
但是我发现,这是由任何向量值包含两个“.”引起的,例如 1.1.9。如果将上面的矢量更改为篮子图标:
<path
android:fillColor="@color/grey"
android:pathData="M17.21,9l-4.38,-6.56c-0.19,-0.28 -0.51,-0.42 -0.83,-0.42 -0.32,0 -0.64,0.14 -0.83,0.43L6.79,9H2c-0.55,0 -1,0.45 -1,1 0,0.09 0.01,0.18 0.04,0.27l2.54,9.27c0.23,0.84 1,1.46 1.92,1.46h13c0.92,0 1.69,-0.62 1.93,-1.46l2.54,-9.27L23,10c0,-0.55 -0.45,-1 -1,-1h-4.79zM9,9l3,-4.4L15,9H9zm3,8c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2 2,0.9 2,2 -0.9,2 -2,2z"/>
一切正常。
我在 code.google.com/p/android 上找不到报告的错误,我想知道是否有 "change all your vectors" 以外的解决方法?
在 Vector Asset Studio 中创建的相同图标似乎不会遇到此问题。所以我想解决方案是始终使用 Vector Asset Studio 创建矢量 xml
文件。