Android属性动画 PropertyValuesHolder
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/118961952
本文出自【赵彦军的博客】
文章目录
- PropertyValuesHolder
- PropertyValuesHolder 之 ofFloat()、ofInt()讲解
- 实战-旋转动画
- 实战-组合动画
- 总结
PropertyValuesHolder
PropertyValuesHolder
这个类的意义就是,它其中保存了动画过程中所需要操作的属性和对应的值。
我们通过ofFloat(Object target, String propertyName, float… values)
构造的动画,ofFloat()
的内部实现其实就是将传进来的参数封装成 PropertyValuesHolder
实例来保存动画状态。在封装成 PropertyValuesHolder
实例以后,后期的各种操作也是以PropertyValuesHolder
为主的。
创建PropertyValuesHolder
实例的函数:
public static PropertyValuesHolder ofFloat(String propertyName, float... values)
public static PropertyValuesHolder ofInt(String propertyName, int... values)
public static PropertyValuesHolder ofObject(String propertyName, TypeEvaluator evaluator,Object... values)
public static PropertyValuesHolder ofKeyframe(String propertyName, Keyframe... values)
PropertyValuesHolder 之 ofFloat()、ofInt()讲解
构造函数:
public static PropertyValuesHolder ofFloat(String propertyName, float... values)
public static PropertyValuesHolder ofInt(String propertyName, int... values)
其中:
参数 | 描述 |
---|---|
propertyName: | propertyName: 表示ObjectAnimator需要操作的属性名。即ObjectAnimator 需要通过反射查找对应属性的setProperty()函数的那个property |
values: | 属性所对应的参数,同样是可变长参数,可以指定多个 |
而 ObjectAnimator
的 ofFloat
如下:
public static ObjectAnimator ofFloat(Object target, String propertyName, float... values);
可以看到在 ObjectAnimator.ofFloat
中只比 PropertyValuesHolder
的 ofFloat
多了一个target
,其它都是完全一样的!
将构造的PropertyValuesHolder实例设置进 ObjectAnimator:
public static ObjectAnimator ofPropertyValuesHolder(Object target,PropertyValuesHolder... values)
其中:
参数 | 描述 |
---|---|
target: | 指需要执行动画的控件 |
values: | 是一个可变长参数,可以传进去多个 PropertyValuesHolder 实例,由于每个 PropertyValuesHolder 实例都会针对一个属性做动画,所以如果传进去多个 PropertyValuesHolder 实例,将会对控件的多个属性同时做动画操作。 |
实战-旋转动画
我们先用 ObjectAnimator.ofFloat 做一个旋转动画
var rotation = ObjectAnimator.ofFloat(myView, "rotation", 0f, 360f)
rotation.duration = 3000
rotation.start()
下面我们再用 ObjectAnimator.ofPropertyValuesHolder 实现相同的功能。
val holder = PropertyValuesHolder.ofFloat("rotation", 0f, 360f)
var rotation = ObjectAnimator.ofPropertyValuesHolder(myView, holder)
rotation.duration = 3000
rotation.start()
运行起来,可以看到,效果是一样的,效果图我就不放了,你们可以自己试试。
我们再来试试组合动画。
实战-组合动画
我们先用 AnimatorSet 做一个组合
var rotation = ObjectAnimator.ofFloat(myView, "rotation", 0f, 360f)
var translationX = ObjectAnimator.ofFloat(myView, "translationX", 0f, 300f)
var translationY = ObjectAnimator.ofFloat(myView, "translationY", 0f, 300f)val set = AnimatorSet()
set.duration = 3000
set.playTogether(rotation, translationX, translationY)
set.start()
我们把代码运行起来,看看效果:
下面我们用 PropertyValuesHolder
实现一遍。
val rHolder = PropertyValuesHolder.ofFloat("rotation", 0f, 360f)
val xHolder = PropertyValuesHolder.ofFloat("translationX", 0f, 300f)
val yHolder = PropertyValuesHolder.ofFloat("translationY", 0f, 300f)var rotation = ObjectAnimator.ofPropertyValuesHolder(myView, rHolder, xHolder, yHolder)
rotation.duration = 3000
rotation.start()
运行起来,看看效果是一样的。
总结
AnimatorSet 是把多个子动画组合起来,可以理解成把动画做的更大,更复杂。
PropertyValuesHolder 是把一个动画拆解成多个子模块,可以理解成把动画做的更小,更精细。
Android属性动画 PropertyValuesHolder相关推荐
- Android 属性动画Property Animation(中)
Android 属性动画Property Animation(上)介绍了属性动画的概念以及相关的类和接口,本篇来看下具体肿么使用. ValueAnimator ValueAnimator指定整形.浮点 ...
- Android 属性动画(一)新手入门
一.属性动画简介 Android 中动画有很多种,属性动画就是其中的一种.所谓的属性动画,就是在指定的时间内,通过改变对象的属性达到变化效果的动画.在 Android 中,属性动画系统是一个强健的框架 ...
- Android 属性动画 详解
Android 属性动画 详解 Android动画类型: View Animation(即所谓的Tween Animation补间动画):View Animation相当简单,不过只能支持简单的缩放. ...
- android动画封装,Android属性动画封装,快速构建动画
Android实现动画效果的方式主要有帧动画.补间动画.属性动画.关于安桌动画的基础知识可以查看这篇文章Android属性动画完全解析 这里我要讲的是如何快速构建出一个动画效果,如下图: 如果我们用属 ...
- Android属性动画 ObjectAnimator
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/118709616 本文出自[赵彦军的博客] 文章目录 ObjectAnimator ...
- (转)Android属性动画完全解析(中),ValueAnimator和ObjectAnimator的高级用法
版权声明:本文出自郭霖的博客,转载必须注明出处. 目录(?)[-] ValueAnimator的高级用法 ObjectAnimator的高级用法 转载请注明出处:http://blog.csdn.ne ...
- android 属性动画实例,Android属性动画完全解析 中 ,ValueAnimator和ObjectAnimator的高级用法...
大家好,在上一篇文章当中,我们学习了Android属性动画的基本用法,当然也是最常用的一些用法,这些用法足以覆盖我们平时大多情况下的动画需求了.但是,正如上篇文章当中所说到的,属性动画对补间动画进行了 ...
- Android 系统(196)---Android 属性动画
Android 属性动画 属性动画 总结&攻略 前言 动画的使用 是 Android 开发中常用的知识 本文将详细介绍 Android 动画中 属性动画的原理 & 使用 动画类型 关于 ...
- Android 属性动画使用(二)
首先扯点别的:晚上稍微跑了一会步,然后逛了超市,晚饭喝的南瓜粥,吃了一碗面条,今天不是太饿,现在正一边吃着葡萄一边学习,也是没谁了. 比如说,我们想要实现从0过渡到100,使用ValueAnimato ...
最新文章
- from beautifulsoup4 import BeautifulSoup 报错
- libevent源码安装及Linux自动编译功能总结
- 生成建表脚本up_CreateTable
- ASP.NET CORE 之 在IIS上部署MVC项目
- 静态方法和实例方法(mark)
- iOS设置拍照retake和use按钮为中文简体
- 【职场】高薪的条件你满足几条?
- 三星Galaxy S21 FE现身Geekbench:骁龙888+6GB运存
- php pdf打印横向,如何将pdfFactory打印调整为横向 - 应用技巧 - 常青藤软件工作室...
- 《数据挖掘导论》学习 | 第十章 异常检测
- 将python图表放入ppt_如何在ppt中嵌入python图表(或图像)并刷新
- 顺序结构程序设计实例
- 火车进站(出栈顺序问题)
- allegro使用汇总 [转贴]
- 【Scikit-Learn 中文文档】数据集加载工具 - 用户指南 | ApacheCN
- Java开发实用工具
- 矩阵等价、相似、合同的定义及性质
- 每日时报,以前端技术体系为主要分享课题
- 普乐蛙5d车载影院5d飞行影院5d轨道影院体验馆
- 2020年低压电工免费试题及低压电工复审模拟考试
热门文章
- 10 windows 启动虚拟机报错_Windows 系统如何安装 Docker
- matlab超出矩阵索引维度_搜你想看“头条搜索”网页版上线 搜索引擎迎来新玩家...
- mac怎么搭建php环境,Mac下快速搭建PHP开发环境
- css 边框设置成不透明,css中如何设置半透明边框?
- 甘肃省计算机等级考试在线支付,甘肃计算机等级考试入口
- arduino 土壤温湿度传感器_智慧农业温室大棚环境监测传感器
- 2019.4.27 人工智能培训安装工作记录
- ACL 2021 | 为什么机器阅读理解模型会学习走捷径?
- 有“声”以来,语音如何识别?
- ICLR 2020 开源论文 | 多关系图神经网络CompGCN