android 动画

1.帧动画

  • 在res/drawable目录下定义一个XML文件,根节点为系统提供的animation-list,然后放入定义好的图片;
  • 使用AnimationDrawable类播放第一步定义好的Drawable中的图片,形成动画效果;

 

2. view动画(补间动画)

实现平移、缩放、旋转、渐变等效果

源码分析:

对xml用XMLPullParser进行解析,通过next()方法遍历xml中所有的节点,最后返回了一个Animation对象;通过startAnimation方法开始执行动画流程:

补间动画平移,透明度等属性设置会影响matrix、alpha,最后在draw方法中通过matrix和alpha去进行绘制展示出连贯的动画效果;

 

 3.属性动画(和view动画相比,属性动画可以响应变化后的区域)

属性动画和view动画不同点:

  • 补间动画只能定义两个关键帧在透明、旋转、位移和倾斜这四个属性的变换,但是属性动画可以定义任何属性的变化。
  • 补间动画只能对 UI 组件执行动画,但属性动画可以对任何对象执行动画。

 

源码分析:

ofFloat实例化了ObjectAnimator对象,设置了target、时长、插值器等等,拿到IntPropertyValueHolder调用setAnimatedValue,通过反射为属性设置值比如target,propname值;通过start开始执行动画流程,不断地重复scheduleAnimation,在scheduleAnimation中通过属性值去改变动画状态,直到duration结束;

 

 

 

三种动画的优缺点:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值