Android视图动画
16lz
2021-01-25
Android的View动画有透明度动画、旋转动画、缩放动画、位移动画,以及它们几种的组合,它控制的是整个view。
优点:
效率比较高
缺点:
视图动画改变的只是显示,当动画完成后,其响应事件的位置还在原来坐标,如使用位移动画后,Button从(x1, y1)移动到了(x2, y2),但它不会在(x2, y2)有交互事件而仍然是在(x1, y1)
1. 透明度动画
AlphaAnimation alphaAnimation = new AlphaAnimation(0, 1);alphaAnimation.setDuration(2000);imageViewAniTes.startAnimation(alphaAnimation);首先构造一个透明动画对象,并指定透明度从多少变化到多少以及动画的变化时间,然后要使用动画的widget调用startAnimation即可。
2. 旋转动画
RotateAnimation rotateAnimation = new RotateAnimation(0, 360, RotateAnimation.RELATIVE_TO_SELF, 0.5f, RotateAnimation.RELATIVE_TO_SELF, 0.5f);rotateAnimation.setDuration(2000);imageViewAniTes.startAnimation(rotateAnimation);
这里的旋转动画指定从0到360度转,并且调用了重载的构造函数说明以自身中心为原点进行旋转。
3. 位移动画
TranslateAnimation translateAnimation = new TranslateAnimation(50, 10, 50, 10);translateAnimation.setDuration(2000);imageViewAniTes.startAnimation(translateAnimation);
这里分别指定了位移动画X轴的起点值和终点值以及Y轴的起点和终端值。
注意:
动画默认接收后会回到原来起始位置,要在动画结束后保持终点位置,需要调用下面这个方法:
translateAnimation.setFillAfter(true);
4. 缩放动画
ScaleAnimation scaleAnimation = new ScaleAnimation(0, 2, 0, 2);scaleAnimation.setDuration(5000);imageViewAniTes.startAnimation(scaleAnimation);
这里指定了缩放动画X轴起点坐标以及缩放完成后,X高相对原来的倍数,Y轴同理。
5. 视图动画组合AnimationSet
AnimationSet animationSet = new AnimationSet(true);animationSet.setDuration(2000);AlphaAnimation alphaAnimation1 = new AlphaAnimation(0.5f, 1);alphaAnimation1.setDuration(2000);animationSet.addAnimation(alphaAnimation1);ScaleAnimation scaleAnimation1 = new ScaleAnimation(0, 2, 0, 2);scaleAnimation1.setDuration(2000);animationSet.addAnimation(scaleAnimation1);imageViewAniTes.startAnimation(animationSet);这里新建了一个动画集合对象,并添加了透明动画和缩放动画,把这个动画集合应用到view上就是两个动画同时作用的效果。
在抽象基类Animation可以看到这个监听器:
因此我们可以通过给动画对象setAnimationListener来监听动画的生命周期并按需执行对应操作。
在Android3.0之后,属性动画的出现,如常用的ObjectAnimator,因为其效果更丰富,应用比视图动画更多,它可以设置动画帧之间的间隙时间、调整帧率从而减少动画过程中频繁绘制界面,这样就减少了CPU的资源消耗。
更多相关文章
- Android(安卓)属性动画看这篇就够了
- Android仿“知乎”隐藏标题栏、回答详情页动画效果
- Android中ImageView的scaleType 属性说明。
- [翻译]Android单手指缩放-第四部分(Android(安卓)one finger zoom
- Android(安卓)Studio 学习笔记(五):WebView 简单说明
- Android(安卓)帧(frame)动画
- 初学Android,图形图像之补间动画(三十六)
- Android系统移植与调试之------->如何修改开机动画的两种方式剖
- Android(安卓)Fragment 体系源码跟踪笔记(3)