(4)动态VectorDrawable兼容性问题以及对应的处理
向下兼容问题
Path Morphing
---路径变换动画,在Android pre-L版本下是无法使用
Path Interpolation
---路径插值器,在Android pre-L版本智能使用系统的插值器,不能自定义
但是系统提供的27中插值器已经够用了= =

向上兼容问题
Path Morphing
---路径变换动画,在Android L版本以上需要使用代码配置,这里有个大坑= =
后面会细说

抽取string兼容问题
不支持从Strings.xml中读取<PathData>

创建一个静态的VectorDrawable 五角星图案,填充色为绿色
目标:五角星到达五边形,即Path Morphing效果

在animator中创建路径变化的属性文件
唯一的变化是property="pathData"
然后改变valueFrom,valueTo分别赋值为前后的形状的pathData具体数值= =

然后就是套路的创建粘合剂以及一系列操作= =,注意在这里如果在5.0以下的android版本上使用时,会报错,需要实现版本的转化操作
具体操作如下= =

这里为了演示效果,采用点击按钮判断的方法,如果版本符合条件,则执行跳转操作
public void switch2L(View view) {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLIPOP) {
startActivity(new Intent(VectorDemo.this, MainActivtiy.class));
}else {
Toast.makeText(VectorDemo.this, "当前系统不支持Lplus", Toast.LENGTH_LONG).show();
}
}

在这个时候,对于pathMorphing的路径变换动画效果,还有一个向上兼容性的问题,当遇到5.0以上的版本时,这里必须需要转化成AnimatedVectorDrawable才能进行相关的操作
点击执行动画的操作修改如下:
@TargetApo(Build.VERSION_CODES.LOLIPOP)
public void animL(View view) {
ImageView imageView = (ImageView) view;
AnimationVector drawable = (AnimatedVectorDrawable)getDrawable(R.drawable.fivestar_anim);
imageView.setImageDrawable(drawable);
if(drawable != null) {
drawable.start();
}
}

android VectorDrawable使用笔记(四)相关推荐

  1. android vectorDrawable使用笔记(一)

    (1)android 5.0  矢量图动画 贝塞尔花式曲线 PathMeasure VectorDrawable instead of mdpi hdpi xhdpi xxhdpi 矢量图和andro ...

  2. android VectorDrawable使用笔记(三)

    (3)矢量图VectorDrawable实现搜索框与轨迹动画 适当增大原来设置的矩形方框,为了更好地显示效果 创建新的动画anim_square <?xml version="1.0& ...

  3. android VectorDrawable使用笔记(二)

    (2)使用动态的VectorDrawable VectorDrawable和IconFont的优势,可以很轻易地使用动画 <?xml version="1.0" encodi ...

  4. android VectorDrawable使用笔记(五)

    (5)VectorDrawable使用场景 vector vs bitmap 1.bitmap的绘制效率并不一定会比vector高,他们有一定的平衡点,当vector比较简单是,其效率一定是比bitm ...

  5. Android群英传笔记——第四章:ListView使用技巧

    Android群英传笔记--第四章:ListView使用技巧 近期也是比較迷茫.可是有一点点还是要坚持的,就是学习了.近期离职了,今天也是继续温习第四章ListView,也拖了事实上也挺久的了,lis ...

  6. Android实例剖析笔记(四)

    摘要:分析NoteEditor这个类和以及Content Provider机制 NoteEditor深入分析 首先来弄清楚"日志编辑"的状态转换,通过上篇文章的方法来做下面这样一个 ...

  7. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  8. Android初级开发笔记-- activity启动模式的学习(1)

    第一次学习Android中一个很重要的概念,启动模式.文章记录的也只是一些入门知识,随着学习的深入还会有activity启动模式的学习(2)和(3). 下面分三个小点说一下对启动模式的理解区别以及如何 ...

  9. Android Studio --- [学习笔记]TCP(第2弹)、GridView、ScrollView

    说明 这篇主要接上一篇Android Studio - > [学习笔记]RadioButton.CheckBox.ImageView.ListView.TCP的三次握手 对上面回答的细解,并用J ...

最新文章

  1. 公开平等的企业文化是OKR落地第一步
  2. mysql 协议的ResultsetRow包及解析
  3. 资深专家给.NET初学者的学习建议(转)
  4. 全局的过滤器, 进行时间的格式化——所谓的全局过滤器,就是所有的VM实例都共享的 || 如何自定义一个私有的过滤器(局部)
  5. ubuntu 11.04下Android开发环境的搭建!
  6. LeetCode-动态规划-198. 打家劫舍
  7. 如何在ashx页面获取Session值(未将对象引用设置到对象的实例) (转)
  8. 1.4Activity保存现场状态
  9. ElasticSearch之Tokenizer 分词器
  10. 自己常用的C/C++小技巧
  11. 图像 存储csv_matplotlib基于数据文件绘制其图像
  12. 41 款实用工具,数据获取、清洗、建模、可视化都有了
  13. python画折线图-python如何画折线图
  14. 通信协议之广播---recvfrom 放回客户端的ip地址第一次全为0.0.0.0
  15. (Quicker)懒人福利:鼠标快捷操作工具箱
  16. Python条件分支语法
  17. 什么是JavaSE,写给第一次接触Java的人
  18. MIDIPLUS STUDIO M S 2 4声卡安装调试教程
  19. DOS命令是如何操作目录和文件夹的?
  20. Linux4.14加密框架中的主要数据结构(1)—— struct crypto_alg(通用算法)

热门文章

  1. @data注解_聊一下@Conditional注解系列的作用
  2. Java IO流思维导图
  3. selenium webdriver中执行js(java)
  4. docker 自定义网桥
  5. android app增加内存大小,android – 增加分配给应用程序的内存
  6. linux php oracle 乱码,Linux下Oraclesqlplus中文显示乱码的问题的解决
  7. 【以太坊】javascript控制台完整交易流程
  8. 如何查看自己在CSDN的排名
  9. 【迁移学习(Transfer L)全面指南】2021年迁移学习发展现状及案例探究
  10. 【微信小程序企业级开发教程】界面跳转方法总结