最近,我想使用Vector Drawable来管理所有图标.Vector Drawable在Android API 21+上运行良好,但当我尝试在我的一个测试设备[亚马逊KFTHWI Android 4.4.3 API 19]上使用它时,根本无法加载所有图标!
这是我的配置:
在项目gradle脚本文件中:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
classpath ...
}
}
Run Code Online (Sandbox Code Playgroud)
所以我的gradle插件版本应该是2.0+
在主模块gradle脚本文件中:
android{
...
defaultConfig{
...
vectorDrawables.useSupportLibrary = true
...
}
}
dependencies{
...
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:gridlayout-v7:23.4.0'
...
}
Run Code Online (Sandbox Code Playgroud)
这个主模块包含应用程序.我编译gridlayout-v7库的原因是因为我在应用程序中使用了一些Gridlayouts.
这是我的实现:
因为我需要根据收到的数据生成一些视图,所以我在java代码中设置了图像源.
ImageView icon = new ImageView(this);
icon.setImageResource(R.drawable.ic_lock_black_24dp);
Run Code Online (Sandbox Code Playgroud)
ic_lock_black_24dp.xml是从Vector Asset Studio中的Material Icon库生成的.
我的期望:
我相信我在我的主模块gradle这个脚本文件会阻止Android的工作室从产生PNG图像为载体的配置,并允许Android的产生可绘制直接在运行时的载体.
但我只是部分正确...我的配置实际上阻止了Android Studio在构建时生成Png.但我的旧Android设备[API 19]无法从矢量生成Drawables !! 所以现在应用程序中没有图标......
以下是例外: [亚马逊KFTHWI Android 4.4.3 API 19]
W/ImageView:Unable to find resource:2130837702 …Run Code Online (Sandbox Code Playgroud) android vector-graphics android-appcompat android-support-library