当前位置: 首页 > news >正文

Android动画——属性动画

在属性动画中,常用到的API有ValueAnimator,ObjectAnimator。

ValueAnimator:时间引擎,负责计算各个帧的属性值,基本上其他属性动画都会直接或间接继承它;

ObjectAnimator: ValueAnimator 的子类,对指定对象的属性执行动画。

属性动画可以看作是增强版的补间动画,与补间动画的不同之处体现在:

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

  • 补间动画只能对 UI 组件执行动画,但属性动画可以对任何对象执行动画。

与补间动画类似的是,属性动画需要定义几个方面的属性:

动画持续时间。默认为300ms, android:duration 属性指定。

动画插值方式 ,android:interploator 指定。

动画重复次数, android:repeatCount 。

重复行为 ,android:repeatMode 指定。

动画集,在属性资源文件中通过 <set …/> 来组合。

帧刷新率,指定多长时间播放一帧。默认为 10 ms。


ValueAnimator

ValueAnimator valueAnimator=ValueAnimator.ofFloat(0f,1f);
valueAnimator.setDuration(2000);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener(){@Overridepublic void onAnimationUpdate(ValueAnimator animtion){float value=(float)animation.getAnimatedValue();log.e(...)}
});
valueAnimator.start();

ObjectAnimator

TextView textview=findViewById(R.id.tv);
//只要TextView类有alpha对应的get set方法,就可以用这个属性,并不一定需要有字段。
ObjectAnimator objectAnimator=ObjectAnimator.ofFloat(textview,"alpha",0f,1f);
objectAnimator.setDuration(2000);
valueAnimator.start();//这个监听器需要重写4个方法,如果不需要4个,则添加下面的匿名类
objectAnimator.addListener(new Animator.AnimatorListener() {@Overridepublic void onAnimationStart(Animation animation) {//动画开始时执行}@Overridepublic void onAnimationRepeat(Animation animation) {//动画重复时执行}@Overridepublic void onAnimationCancel()(Animation animation) {//动画取消时执行}@Overridepublic void onAnimationEnd(Animation animation) {//动画结束时执行}});//这个只需要重写你需要的方法即可
objectAnimator.addListener(new AnimatorListenerAdapter() {@Overridepublic void onAnimationStart(Animation animation) {//动画开始时执行}});
http://www.lryc.cn/news/32514.html

相关文章:

  • 华为OD机试真题Python实现【寻找连续区间】真题+解题思路+代码(20222023)
  • 15. 三数之和
  • 40-Golang中的文件
  • Springboot整合RabbitMQ并使用
  • Java中方法引用(引用静态方法、引用成员方法(引用其他类的成员方法、引用本类的成员方法、引用父类的成员方法)、引用构造方法、其他调用方式、小练习)
  • 整理了100道关于Python基础知识的练习题,记得收藏~
  • OSG三维渲染引擎编程学习之七十七:“第七章:OSG场景图形交互” 之 “7.8 场景交互”
  • 797.差分
  • 为什么说要慎用BeanUtils,因为性能真的拉跨
  • 【项目设计】高并发内存池(六)[细节优化+测试]
  • 同模块设置不同应用主题方案
  • centos7 安装 hyperf
  • RZ/G2UL核心板-40℃低温启动测试
  • PyQt5可视化 7 饼图和柱状图实操案例 ①Qt项目的创建
  • 0104路径搜索和单点路径-无向图-数据结构和算法(Java)
  • Maxscale读写分离实施文档
  • websocket实现一个简单聊天框
  • Docker-安装应用
  • Web3中的营销:如何在2023年获得优势
  • Java中==和equals区别
  • 计算机科学导论笔记(三)
  • Stream——数字类型的字符串排序
  • .NET 8 预览版 1 发布!
  • WebGIS学习路线
  • 【独家】华为OD机试 - 停车场最大距离(C 语言解题)
  • 12.typedef的使用与结构体定义
  • 宝塔+docker+jenkins部署vue项目(保姆级教程)
  • JVM面试总结
  • C语言——文件操作
  • 使用aim7测试内核性能变化