没有合适的资源?快使用搜索试试~ 我知道了~
Android源码解析之属性动画详解
0 下载量 66 浏览量
2021-01-04
06:37:51
上传
评论
收藏 81KB PDF 举报
温馨提示
前言 大家在日常开发中离不开动画,属性动画更为强大,我们不仅要知道如何使用,更要知道他的原理。这样,才能得心应手。那么,今天,就从最简单的来说,了解下属性动画的原理。 ObjectAnimator .ofInt(mView,width,100,500) .setDuration(1000) .start(); ObjectAnimator#ofInt 以这个为例,代码如下。 public static ObjectAnimator ofInt(Object target, String propertyName, int... values) { ObjectAnimator
资源推荐
资源详情
资源评论




















Android源码解析之属性动画详解源码解析之属性动画详解
前言前言
大家在日常开发中离不开动画,属性动画更为强大,我们不仅要知道如何使用,更要知道他的原理。这样,才能得心应手。那
么,今天,就从最简单的来说,了解下属性动画的原理。
ObjectAnimator
.ofInt(mView,"width",100,500)
.setDuration(1000)
.start();
ObjectAnimator#ofInt
以这个为例,代码如下。
public static ObjectAnimator ofInt(Object target, String propertyName, int... values) {
ObjectAnimator anim = new ObjectAnimator(target, propertyName);
anim.setIntValues(values);
return anim;
}
在这个方法中,首先会new一个ObjectAnimator对象,然后通过setIntValues方法将值设置进去,然后返回。在
ObjectAnimator的构造方法中,会通过setTarget方法设置当前动画的对象,通过setPropertyName设置当前的属性名。我们重
点说下setIntValues方法。
public void setIntValues(int... values) {
if (mValues == null || mValues.length == 0) {
// No values yet - this animator is being constructed piecemeal. Init the values with
// whatever the current propertyName is
if (mProperty != null) {
setValues(PropertyValuesHolder.ofInt(mProperty, values));
} else {
setValues(PropertyValuesHolder.ofInt(mPropertyName, values));
}
} else {
super.setIntValues(values);
}
}
首先会判断,mValues是不是null,我们这里是null,并且mProperty也是null,所以会调用
setValues(PropertyValuesHolder.ofInt(mPropertyName, values));方法。先看PropertyValuesHolder.ofInt方法,PropertyValuesHolder这个类是
holds属性和值的,在这个方法会构造一个IntPropertyValuesHolder对象并返回。
public static PropertyValuesHolder ofInt(String propertyName, int... values) {
return new IntPropertyValuesHolder(propertyName, values);
}
IntPropertyValuesHolder的构造方法如下:
public IntPropertyValuesHolder(String propertyName, int... values) {
super(propertyName);
setIntValues(values);
}
在这里,首先会调用他的分类的构造方法,然后调用setIntValues方法,在他父类的构造方法中,只是设置了下
propertyName。setIntValues内容如下:
public void setIntValues(int... values) {
super.setIntValues(values);
mIntKeyframes = (Keyframes.IntKeyframes) mKeyframes;
}
在父类的setIntValues方法中,初始化了mValueType为int.class,mKeyframes为KeyframeSet.ofInt(values)。其中
KeyframeSet为关键帧集合。然后将mKeyframes赋值给mIntKeyframes。
KeyframeSet
这个类是记录关键帧的。我们看下他的ofInt方法。
资源评论


weixin_38740328
- 粉丝: 4
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- ctoc电子商务专题知识讲座.pptx
- C语言第7讲关系运算与逻辑运算if语句.ppt
- 基于单片机温度控制系统的设计.doc
- 基于AT89C52单片机的温室控制系统.doc
- 专题讲座资料(2021-2022年)单片机的红外防盗报警器.doc
- 购物网站策划书.doc
- 基于数据挖掘技术的负荷预测及主动设备维护可行性研究报告.doc
- 计算机教研组工作总结(2023年2023年第一学期).docx
- 【源版】第五章-数据库技术基础.ppt
- 工厂数字化网络监控系统解决方案.doc
- 网络谣言的传播与成因.ppt
- 基于GPS车辆跟踪系统的移动对象数据库应用研究.doc
- 光纤通信(第5版)课后习题答案要点.doc
- 高中数学第1章算法初步章末复习与总结课件新人教A版必修.ppt
- 网络研修学习总结.doc
- 中小型企业网站建设方案模板.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
