在较新的Android版本上,以下代码:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<solid android:color="#bdbdbd" />
<size
android:width="60dp"
android:height="60dp" />
</shape>
</item>
<item
android:drawable="@drawable/ic_library_books_black_24dp"
android:gravity="center"
android:width="40dp"
android:height="40dp"
>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
完美地生产:
然而,早期的Android版本(API 16和19,来自我测试过的)根本不喜欢这个,我得到了
E/AndroidRuntime: FATAL EXCEPTION: main
Process: package.app, PID: 11490
android.view.InflateException: Binary XML file line #26: Error inflating class ImageView
Run Code Online (Sandbox Code Playgroud)
通货膨胀.我用过app:srcCompat所有的ImageViews,所以没有问题.
标准矢量Drawables也可以正常工作,但放在layer-list它们时会造成混乱.有没有解决方法?
我有一个AppWidget,我想在Lollipop前设备上使用VectorDrawables.VectorDrawableCompat不能与我创建的RemoteViews一起使用.
为了保持我的应用APK大小,我不想为旧的API平台添加我的drawables的替代PNG版本.
我怎样才能做到这一点?
android android-appcompat remoteview android-support-library android-vectordrawable
我有一个VectorDrawable由9个矩形组成.这被定义为drawables文件夹中的XML.我将此设置作为我在xml中声明的ImageView的背景.android:src="@drawable/squares00"
我想在运行时以编程方式更改一个或多个方块的颜色.我知道有办法使用VectorDrawable动画来做到这一点.但我想知道是否有更简单的方法来访问我在java中的vectorDrawable,更新其属性(设置一个或多个矩形的填充颜色),然后使用更新的VectoDrawable更新图像背景.我的目标是Android API 21(棒棒糖)
我有一个在大多数设备上运行完美的应用程序.但是,每当我尝试在API <21的设备上运行我的应用程序时,我都会遇到FATAL异常.
这是日志:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.aceinteract.sleak/com.aceinteract.sleak.activity.LoginRegisterActivity}: android.view.InflateException: Binary XML file line #9: Error inflating class EditText
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2262)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2316)
at android.app.ActivityThread.access$700(ActivityThread.java:158)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1296)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5365)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #9: Error inflating class EditText
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:710)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:752)
at android.view.LayoutInflater.parseInclude(LayoutInflater.java:846)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:742)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:760)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:760)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:760)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:760)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:760)
at android.view.LayoutInflater.inflate(LayoutInflater.java:495)
at …Run Code Online (Sandbox Code Playgroud) xml android android-resources android-drawable android-vectordrawable
我尽可能用VectorDrawables替换所有图标.但是我注意到它们中的一些在API 23上无法正确渲染,颜色似乎正在流失.其中一个渲染很好.这是我创建的一个孤立项目的屏幕截图:
在API 21上看起来非常好:
我在ImageView上使用AppCompat 24.0.0,app:srcCompat并设置了vectorDrawables.useSupportLibrary = true.我还尝试使用目标23的AppCompat 23.4.0.但是,如果我删除appCompat并将minSdkVersion设置为21并使用本机矢量支持,则结果不会更改.IDE不会抱怨任何不受支持的内容.我如何找出问题所在?这是一个平台错误吗?有没有解决方法?
我使用Vector Drawables.它在我的几个设备上运行良好,但在我的索尼与Android 5.0.2上我得到我的应用程序启动:
java.lang.ArrayIndexOutOfBoundsException: length=32; index=32
at android.util.PathParser$PathDataNode.addCommand(PathParser.java:370)
at android.util.PathParser$PathDataNode.nodesToPath(PathParser.java:260)
at android.graphics.drawable.VectorDrawable$VPath.toPath(VectorDrawable.java:1265)
at android.graphics.drawable.VectorDrawable$VPathRenderer.drawPath(VectorDrawable.java:950)
Run Code Online (Sandbox Code Playgroud)
看起来我有一些svgs转换为xml与此设备不支持的标签.但是如何理解哪些以及如何确保它将适用于所有其他受支持的设备.
我收到此错误:
渲染问题渲染期间引发的异常:android.graphics.drawable.VectorDrawable_Delegate.nDraw(JJJLandroid/graphics/Rect; ZZ)
我知道我可以从"N预览"版本更改为"23"并且它可以正常工作但是我必须这样做以便它能够在"预览"中工作吗?
我试过了:
在工具栏中使用新的VectorDrawable的正确方法是什么?
我尝试使用app:srcCompat如下图所示的元素,但没有任何显示.
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
app:srcCompat="@drawable/ic_clear"
app:showAsAction="ifRoom" />
</menu>
Run Code Online (Sandbox Code Playgroud)
我有自己的工具栏布局android.support.v7.widget.Toolbar和JB(16)上的Android支持库v23.2.
如果我在gradle中使用vectorDrawables.useSupportLibrary = true,那么不幸地运行它停止的应用程序.如果我删除vectorDrawables.useSupportLibrary = true,该应用程序将起作用.
我的朋友:
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
vectorDrawables.useSupportLibrary = true
applicationId "com.helikanon.firstapp"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.1.0'
compile 'com.android.support:design:25.1.0'
compile 'com.jakewharton:butterknife:8.4.0'
compile 'com.android.support:support-v4:25.1.0'
testCompile 'junit:junit:4.12'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
compile 'uk.co.chrisjenx:calligraphy:2.2.0'
compile 'com.google.android.gms:play-services-ads:10.0.1' …Run Code Online (Sandbox Code Playgroud) android android-appcompat android-support-library android-vectordrawable
我想修改现有的Android可绘制矢量 XML资源,但Android Studio只允许在XML源代码中执行.
你能推荐一个用于"交互式"编辑Android可绘制XML的工具吗?
或者可能有一种方法可以将这些文件导入到Incscape或Adobe ......