我的应用程序在5.1.0中运行平稳,但当我在4.2.2中运行时,它显示错误:
Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #1: invalid drawable tag vector
我研究过这个。它说在gradle中添加向量支持错误,所以我补充道:
compileSdkVersion 23
buildToolsVersion "25.0.1"
defaultConfig {
applicationId "com.wmt.android.troopool"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "0.1"
multiDexEnabled true
renderscriptTargetApi 18
renderscriptSupportModeEnabled true
vectorDrawables.useSupportLibrary = true
}
compile 'com.android.support:support-vector-drawable:23.2.0'
compile 'com.android.support:animated-vector-drawable:23.2.0'
vectorDrawables。useSupportLibrary=true
和gradle文件中的两个依赖项。
但它在4.4.2中显示了相同的错误。
嘿,要在Lollipop下面的android上使用矢量绘图,您需要将代码中的图像放在这里,这里有一些功能可以帮助您随心所欲
public static enum DrawablePosition {
Left, Right, Top, Bottom
}
public static Drawable getDrawable(Context context, int drawable) {
return DrawableCompat.wrap(VectorDrawableCompat.create(context.getResources(), drawable, null));
}
public static Drawable getDrawableWithColor(Context context, int drawableResId, int IntColorOfDrawable) {
Drawable drawable = VectorDrawableCompat.create(context.getResources(), drawableResId, null);
DrawableCompat.wrap(drawable);
DrawableCompat.setTint(drawable, IntColorOfDrawable);
DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_IN);
return drawable;
}
public static void setDrawableWithColorForIds(AppCompatActivity activity, int color, int[] ids, int drawable[]) {
for (int i = 0; i != ids.length; i++) {
Drawable drawable1 = VectorDrawableCompat.create(activity.getResources(), drawable[i], null);
DrawableCompat.wrap(drawable1);
DrawableCompat.setTint(drawable1, color);
DrawableCompat.setTintMode(drawable1, PorterDuff.Mode.SRC_IN);
((TextView) activity.findViewById(ids[i])).setCompoundDrawablesWithIntrinsicBounds(drawable1, null, null, null);
}
}
public static void placeVectorOnTextView(Context context, TextView textView, int vectorDrawableResID, @Nullable Integer VectorColor, DrawablePosition position) {
Drawable drawable = VectorDrawableCompat.create(context.getResources(), vectorDrawableResID, null);
DrawableCompat.wrap(drawable);
if (VectorColor != null){
DrawableCompat.setTint(drawable, VectorColor);
DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_IN);
}
switch (position) {
case Left:
textView.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null);
break;
case Bottom:
textView.setCompoundDrawablesWithIntrinsicBounds(null, null, null, drawable);
break;
case Right:
textView.setCompoundDrawablesWithIntrinsicBounds(null, null, drawable, null);
break;
case Top:
textView.setCompoundDrawablesWithIntrinsicBounds(null, drawable, null, null);
break;
}
}
public static void placeVectorOnEditText(Context context, EditText editText, int vectorDrawableResID, int VectorColor, DrawablePosition position) {
Drawable drawable = VectorDrawableCompat.create(context.getResources(), vectorDrawableResID, null);
DrawableCompat.wrap(drawable);
DrawableCompat.setTint(drawable, VectorColor);
DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_IN);
switch (position) {
case Left:
editText.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null);
break;
case Bottom:
editText.setCompoundDrawablesWithIntrinsicBounds(null, null, null, drawable);
break;
case Right:
editText.setCompoundDrawablesWithIntrinsicBounds(null, null, drawable, null);
break;
case Top:
editText.setCompoundDrawablesWithIntrinsicBounds(null, drawable, null, null);
break;
}
}
public static void placeVectorOnButton(Context context, Button button, int vectorDrawableResID, int VectorColor, DrawablePosition position) {
Drawable drawable = VectorDrawableCompat.create(context.getResources(), vectorDrawableResID, null);
DrawableCompat.wrap(drawable);
DrawableCompat.setTint(drawable, VectorColor);
DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_IN);
switch (position) {
case Left:
button.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null);
break;
case Bottom:
button.setCompoundDrawablesWithIntrinsicBounds(null, null, null, drawable);
break;
case Right:
button.setCompoundDrawablesWithIntrinsicBounds(null, null, drawable, null);
break;
case Top:
button.setCompoundDrawablesWithIntrinsicBounds(null, drawable, null, null);
break;
}
}
public static void placeVectorOnRadioButton(Context context, RadioButton radioButton, int vectorDrawableResID, int VectorColor, DrawablePosition position) {
Drawable drawable = VectorDrawableCompat.create(context.getResources(), vectorDrawableResID, null);
DrawableCompat.wrap(drawable);
DrawableCompat.setTint(drawable, VectorColor);
DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_IN);
switch (position) {
case Left:
radioButton.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null);
break;
case Bottom:
radioButton.setCompoundDrawablesWithIntrinsicBounds(null, null, null, drawable);
break;
case Right:
radioButton.setCompoundDrawablesWithIntrinsicBounds(null, null, drawable, null);
break;
case Top:
radioButton.setCompoundDrawablesWithIntrinsicBounds(null, drawable, null, null);
break;
}
}
public static void placeVectorOnCheckBox(Context context, CheckBox checkBox, int vectorDrawableResID, int VectorColor, DrawablePosition position) {
Drawable drawable = VectorDrawableCompat.create(context.getResources(), vectorDrawableResID, null);
DrawableCompat.wrap(drawable);
DrawableCompat.setTint(drawable, VectorColor);
DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_IN);
switch (position) {
case Left:
checkBox.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null);
break;
case Bottom:
checkBox.setCompoundDrawablesWithIntrinsicBounds(null, null, null, drawable);
break;
case Right:
checkBox.setCompoundDrawablesWithIntrinsicBounds(null, null, drawable, null);
break;
case Top:
checkBox.setCompoundDrawablesWithIntrinsicBounds(null, drawable, null, null);
break;
}
}
支持向量机 概述 支持向量机(Support Vector Machines, SVM):是一种监督学习算法。 支持向量(Support Vector)就是离分隔超平面最近的那些点。 机(Machine)就是表示一种算法,而不是表示机器。 支持向量机 场景 要给左右两边的点进行分类 明显发现:选择D会比B、C分隔的效果要好很多。 支持向量机 原理 SVM 工作原理 对于上述的苹果和香蕉,我们想象为
支持向量机(Support Vector Machine,SVM它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,学习策略是间隔最大化,最终可转化为一个凸二次规划问题的求解。 直观来看,位于两类训练样本“正中间”的划分超平面效果最好,即中间最粗的那条。 一般使用支持向量机时还会使用核函数,这样支持向量机会成为实质上的非线性分类器。 基本概念 在样本空间中,划分超平面可以定义为
我正在尝试应用文本排序算法,不幸的是,我有一个错误 我有以下错误: 回溯(最近一次呼叫最后一次): 文件“bayes_classif.py”,第22行,在 数据集=pd。read_csv('train.csv',编码='utf-8') 文件“/usr/local/lib/python3.6/dist-packages/pandas/io/parsers.py”,第678行,在解析器中 返回读取(文
综述 “看二更云,三更月,四更天。” 本文采用编译器:jupyter 给定训练样本集D,分类学习最基本的想法就是基于训练集D的样本空间中找到一个划分超平面,将不同类别的样本分开。但能将训练样本分开但划分超平面可能有很多,如图。 存在多个划分超平面将两类训练样本分开 直观上看,应该去找位于两类训练样本"正中间"的划分超平面,即图中粗线的那个,因为该划分超平面对训练样本局部扰动的"容忍性"最好。
支持向量机(SVM)是个非常强大并且有多种功能的机器学习模型,能够做线性或者非线性的分类,回归,甚至异常值检测。机器学习领域中最为流行的模型之一,是任何学习机器学习的人必备的工具。SVM 特别适合应用于复杂但中小规模数据集的分类问题。 本章节将阐述支持向量机的核心概念,怎么使用这个强大的模型,以及它是如何工作的。 线性支持向量机分类 SVM 的基本思想能够用一些图片来解释得很好,图 5-1 展示了
支持向量机(SVM)是个非常强大并且有多种功能的机器学习模型,能够做线性或者非线性的分类,回归,甚至异常值检测。机器学习领域中最为流行的模型之一,是任何学习机器学习的人必备的工具。SVM 特别适合应用于复杂但中小规模数据集的分类问题。 本章节将阐述支持向量机的核心概念,怎么使用这个强大的模型,以及它是如何工作的。 线性支持向量机分类 SVM 的基本思想能够用一些图片来解释得很好,图 5-1 展示了