| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Android动画浅谈(一) -> 正文阅读 |
|
[移动开发]Android动画浅谈(一) |
Android动画的分类Android中的动画主要有三类:逐帧动画、补间动画和属性动画,。逐帧动画的原理是利用人类的“视觉残留”,通过改变播放图片的形式来达到动画的效果,在实际开发中使用较少,故本文中不予以展开。主要介绍补间动画和属性动画。 使用补间动画已经可以实现很多的动画效果了,但是仍然有一些局限,所以推出了属性动画作为动画的补充,但它们两者还是存在一些差别的。 2、然后是作用方法上,补间动画主要针对View指定的属性,比如position、alpha等等,而属性动画作用对象的任意属性,例如背景颜色等等。 3、最后实在作用效果上,补间动画达到的只是视觉上的效果,例如使用补间动画将某一个可点击的View移动到了界面的另一个位置,当你想要触发改View的点击事件时,你还是需要点击View原来的位置,因为补间动画只是实现了“视觉”上的移动,而没有做到实际的移动,而使用属性动画移动后的对象,点击移动后的对象才会触发对象的点击事件,因为属性动画实现的是真正意义上的移动,而不仅仅是“视觉”上。 ValueAnimatorvalueAnimator是属性动画中最核心的类,属性动画的原理是不断的对值进行更新和改变,来实现动画的效果,我们只需要手动设置相应起始值和对应的终止值以及对应的时间即可以完成一个简单的动画。例如,
即可实现一个简单的值动画,动画效果是在1000ms内alphaBtn的alpha值从0变为1(即可见)。通过给对象的某些属性设置变化的值从而达到动画的效果就是值动画。 ObjectAnimatorObjectAnimator是ValueAnimator的子类,相比于ValueAnimator,我们更常用的是ObjectAnimator,因为ValueAnimator只是提供了值的过渡、变化,具体要作用到对象的哪个属性还需要我们自己再去设置,而ObjectAnimator可以直接作用于对象的某个属性,而不必我们再次指定需要作用的属性。例如,
这种方法也实现了和上面的值动画一样的动画效果,在1000ms内alphaBtn的alpha值从0变为1(即可见)。 组合动画(动画集合AnimatorSet)一个复杂的动画常常需要多个简单的动画一起组合才能够完成,基于这样的需求,就出现了组合动画AnimatorSet。组合动画使用play()方法控制动画执行的顺序,以组合成复杂的动画。常用的类型有: AniamtorSet.playTogtether(animator1,animator2)? :animator1和animator2同时执行 Animator监听器在很多时候我们需要在动画的不同阶段做一些处理,这就要求我们能够识别、监听到动画的各个状态。Animator中提供了一个addListener()方法,该方法接收一个AnimatorListener对象,可以实现对动画状态的监听,给一个Animator添加监听的方法如下,
onAnimationStart()会在动画开始的时候被调用;onAnimationEnd()会在动画结束的时候被调用;onAnimationCancel()会在动画取消时被调用;onAnimationRepeat()会在动画重复时被调用。 插值器(Interpolator)在动画执行的过程中,除了平滑的过渡之外,我们可能需要一些个性化的过渡,这个时候我们就需要用到插值器(Interpolator)来对过渡过程进行一些设置和调整,常用的插值器有线性插值器(LinearInterpolator)、Bezier曲线型插值器(PathInterpolator)、正弦插值器(SinInterpolator)等等。
如上是给第一个值动画添加了一个Bezier曲线型插值器,根据log中打印出来的value值可以发现,value的值不再是线性变化,而是根据我们设置的PathInterpolator进行了改变,从而达到了控制动画过程的效果。 XML动画除了在代码里使用Java编写写动画之外,还可以使用XML编写动画,在编写动画的XML我们一共可以使用三中标签 <animator>、<objectAnimator>、<set>,分别对应代码中的ValueAnimator、ObjectAnimator、AnimatorSet。在res目录下新建一个animator文件夹,在里面新建一个alpha.xml,内容如下:
该动画的使用和之前的动画使用有一点区别,在使用该动画之前需要先初始化(AnimatorInflater.loadAnimator())该动画,并为该动画设置作用的对象(setTarget()),举例如下:
这样就使用XML编写了一个动画效果为在1000ms内alphaBtn的alpha值从0变为1(即可见)的动画。 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 8:30:50- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |