VectorDrawable兼容笔记
来源:互联网 发布:工艺流程设计软件 编辑:程序博客网 时间:2024/06/06 00:02
VectorDrawable使用时,如果要兼容Android 5.0以下版本。应该注意以下几点:
1. ImageView\ImageButton中使用(Activity继承自AppCompatActivity,如果不是,请使用AppCompatImageView)
对于ImageView这样的控件,要兼容Vector图像,只需要将之前的android:src属性,换成app:srcCompat即可,示例代码如下所示:
<ImageViewandroid:id="@+id/iv"android:layout_width="wrap_content"android:layout_height="wrap_content"app:srcCompat="@drawable/vector_image"/>
在代码中设置的话,可以使用setBackgroundResource方法设置,代码如下所示:
ImageView iv = (ImageView) findViewById(R.id.iv);iv.setImageResource(R.drawable.vector_image);
2. 当在非ImageView控件中(Button、TextView等)作为Background、CompoundDrawable时,需要在Activity中加入以下声明
static { AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);}
另外,如果直接在xml布局文件中使用,则必须使用selector、layer-list这种容器包裹起来,不能直接使用
(在代码中设置不需要)
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/vector_retry" /></layer-list>
3. 虽然Google已经对Vector图像进行了Android 2.1以上的兼容,但对于动态Vector动画,还是有很多限制的,例如:
1) Path Morphing,即路径变换动画,在Android pre-L版本下是无法使用的(不会动)。
2)Path Interpolation,即路径插值器,在Android pre-L版本只能使用系统的插值器,不能自定义。
3)Path Animation,即路径动画,这个一般使用贝塞尔曲线来代替,所以没有太大影响。
4. 除了在低版本上的兼容性问题,在L版本以上,也存在兼容性问题,即继承了AppCompatActivity的界面,如果直接设置ImageView的srcCompat,那么Path Morphing动画是无法生效的,因为默认的AppCompatActivity已经默认使用ImageViewCompat给转换了,但是AnimatedVectorDrawableCompat是不支持Path Morphing动画的,所以,在AppCompatActivity界面里面就无效了。
解决办法很简单,即使用代码来给ImageView添加动画:
ImageView imageView = (ImageView) view;AnimatedVectorDrawable morphing = (AnimatedVectorDrawable)getDrawable(morphing);imageView.setImageDrawable(morphing);if (morphing != null) { morphing.start();}
注意不要使用AnimatedVectorDrawableCompat。
详细情况,这篇文章讲解的很清楚:
Android Vector曲折的兼容之路:http://blog.csdn.net/eclipsexys/article/details/51838119
0 0
- VectorDrawable兼容笔记
- VectorDrawable
- VectorDrawable
- VectorDrawable-第一章
- VectorDrawable入门
- VectorDrawable 详解
- VectorDrawable-第一章
- VectorDrawable-第一章
- VectorDrawable(矢量图)
- VectorDrawable 详解
- 矢量图VectorDrawable
- VectorDrawable矢量图
- VectorDrawable基础知识
- 浏览器兼容笔记
- ie浏览器兼容笔记
- ie浏览器兼容笔记
- 【前端兼容】2016前端兼容笔记
- Android VectorDrawable与SVG
- Missing artifact com.microsoft:microsoft-jdbc-driver:jar:1.0
- 字符串数组
- vs2015未安装 Style 的 Visual Studio 语言支持
- JAVA JDK1.7的新特性
- Android Studio中将activity设置为无标题
- VectorDrawable兼容笔记
- 利用BP神经网络教计算机进行非线函数拟合(代码部分单层)
- 简单话题:LED呼吸灯和串口LED指示灯
- Java 8新特性探究(二):深入解析默认方法
- syslog 使用总结
- JAVA 注解(Annotation)自定义注解入门
- 常见报错处理
- 安全架构总体方案
- QGroundControl Developers Guide——Fact System