- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我使用的是支持库版本 24.2.1,并通过 AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
这些关于支持向量的函数有什么区别?我使用的是 VectorDrawableCompat.create(getResources(), R.drawable.my_vector, null)
。但是,当以编程方式在按钮上设置可绘制对象时,这不会在我的测试设备(Android 4.3)上产生可绘制对象:
button.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null);
使用 AppCompatDrawableManager.get().getDrawable(getActivity(), R.drawable.my_vector);
(包裹在状态列表选择器中)似乎工作正常,虽然我似乎做不到找到它的文档。
最佳答案
What is the difference in these functions regarding support vectors?
AppCompatResources.getDrawable(...)
将膨胀各种可绘制对象,包括
ContextCompat.getDrawable(Context, int)
获取的任何其他可绘制对象此方法在内部调用 AppCompatDrawableManager.get().getDrawable(Context, int)
,它不是公共(public) API 的一部分。从消费者的角度来看,这两种方法在功能上是相同的。
VectorDrawableCompat.create(...)
只会膨胀矢量可绘制对象(仅当构建脚本启用了支持矢量可绘制对象时;进一步阅读)。
But this does not produce a drawable on my test device (Android 4.3)
VectorDrawableCompat.create(...)
将在出错时返回 null
。如果引用的可绘制对象不是矢量可绘制对象,则可能会发生这种情况,如果您没有正确配置构建插件并且为 API 21 以下的平台生成了 PNG,则可能会发生这种情况。
通过更改app 模块 build.gradle
激活低于 API 21 的矢量绘图支持:
// Gradle Plugin 2.0+
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
参见 Android Support Library 23.2博客文章以获取更多信息。
I am using support lib version 24.2.1, and have enabled support vectors with
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
此方法不“启用支持向量”。首先,如上所述,您需要在 build.gradle
中启用支持矢量绘图。
之后,此方法基本上启用可绘制容器内的支持矢量可绘制对象,例如 LayerDrawable
或 StateListDrawable
。
参见 AppCompat — Age of the vectors有关如何滥用此信息的更多信息。
关于android - AppCompatDrawableManager.get() 与 VectorDrawableCompat.create(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40241018/
为了在我的 android 项目中使用 SVG 文件,我必须使用 vector compat。 首先,我根据 http://a-student.github.io/SvgToVectorDrawabl
我读过 this文章,但对我来说仍然没有意义。 从 gradle 构建工具 1.5.0 开始,我们可以在应用程序中使用矢量绘图。对于 Lollipop 及以上版本,使用矢量,对于以下操作系统版本,gr
我最初用 21 (Lollipop) 的 minsdkversion 编写了这个 SSCCE,它运行良好。 但我需要在 pre-lollipop 中使用 VectorDrawableCompat。 在
我使用的是 Android Studio 2.1.2。我开始了一个 minSdkVersion 为 19 的新项目。我的 Activity 扩展了 AppCompatActivity。该项目从一个使用
我使用的是支持库版本 24.2.1,并通过 AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); 启用了支持向量 这些关于支持向量的
我的用例是创建启动画面(别问,我只是不得不问)。 我找到了 Ian Lake 的这篇优秀帖子:https://plus.google.com/+AndroidDevelopers/posts/Z1Ww
当我启用时 vectorDrawables.useSupportLibrary = true 我在 KitKat 及以下设备上收到很多 resourceNotFoundExceptions。我为菜单的
我使用这段代码来支持旧设备上的矢量图像: VectorDrawableCompat.create(context.getResources(), resId, context.getTheme());
我在 Android Studio 中创建了一个项目。 即使不修改项目中的任何单个字符,我也无法运行它。它给出以下错误。 java.lang.RuntimeException: Unable to s
VectorDrawableCompat 终于进入了 SDK 23 的支持库。但它似乎不起作用,或者我可能遗漏了什么。 drawable/mypic.xml: fragment_bl
我将 VectorDrawableCompat 设置为 View 的背景。 仅当我点击可绘制对象的非透明区域时,我才需要在此 View 上处理点击。 对于 BitmapDrawable 来说非常简单
我在 Android Studio 中启动了一个新项目并配置了我的 gradle build设置。当我将 android.support.v7.widget.Toolbar 添加到布局时,在设计 Vi
在 Android 模拟器上开始调试我的项目时,我收到此错误: Java.Lang.NoClassDefFoundError: android.support.graphics.drawable.Ve
我有一个 AppWidget,我想在 Lollipop 之前的设备上使用 VectorDrawables。VectorDrawableCompat 不适用于我创建的 RemoteView。 为了减小我
希望有人能帮助我。在 Lollipop 版本上运行我的应用程序时出现此错误: Process: br.com.turbi.turbi, PID: 4279
我是一名优秀的程序员,十分优秀!