1、简介
在上一篇,简要的介绍了Android动画分类及基本区别,本篇文章将会详细接收Android补间动画中的缩放动画各种使用方法,方便自己及广大开发人员在需要时快速查看。
话不多说,我们先以一个GIF图来展示具体效果。
2、具体实现
如果我们要实现如上图的效果,通过补间动画的方式该如何实现呢?
2.1 实现缩放动画xml文件
我们在res下创建anim文件夹,然后创建一个动画文件 scale_animation.xml,具体内容如下:
<?xml version="1.0" encoding="utf-8"?>
<!-- 缩放动画 -->
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000"
android:fromXScale="1"
android:fromYScale="1"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="infinite"
android:repeatMode="restart"
android:toXScale="0.7"
android:toYScale="0.7">
</scale>
2.2 java代码中引入该动画
private View scaleAnimView;
private void startScaleAnimation(){
scaleAnimView = findViewById(R.id.view_scale_anim);
Animation animation = AnimationUtils.loadAnimation(this,R.anim.scale_animation);
scaleAnimView.startAnimation(animation);
}
如上所示,即可实现动画功能。
3、scale 属性详解
在2.1的xml文件中,使用了许多属性,那么问题来了,scale中有多少属性可以使用,这些属性分别都具有什么意思呢?
android:duration="2000" // 动画持续时间。即这个动画会持续多长时间,单位(ms)
android:fillAfter="true" // 用于确定View是否保持动画结束时的状态,如果设置为true,动画结束时,View将保持动画最后时
// 的状态,为false就是不保持,回到View本身的初始值的状态,默认为false;
android:fillBefore="true" // 用于确定动画开始时,View的动画属性值;这里所说的动画开始不是指调用startAnimation方
// 法,而是界面中动画真正开始动的时候(从调用startAnimation到动画真正开始时,中间有一个
// startOffset阶段)。若fillBefore为true,则在startOffset阶段时,将View属性设置为
// fromScale对应的值,为false,则为View本身的初始值,默认为true;
android:fillEnabled="true" // 用来控制fillBefore属性是否有效,若为true,则fillBefore生效;若为false, 则使用
// fillBefore的默认值,即为true,在xml中设置的值无效;
android:fromXScale="1" // X轴起始缩放倍数
android:fromYScale="1" // Y轴起始缩放倍数
android:pivotX="50%" // 缩放轴点X坐标
android:pivotY="50%" // 缩放轴点Y坐标
android:repeatCount="0" // 重复次数,值infinite为无限一直重复
android:repeatMode="restart" // 播放的动画模式restart表示正序播放,reverse代表倒序播放,默认是restart
android:startOffset="0" // 动画延迟开始时间(多长时间后开始执行动画)
android:toXScale="2.5" // 缩放轴点的X坐标
android:toYScale="2.5" // 缩放轴点的Y坐标
4、其他案例
在第一个案例中,我们看到View 在变小后突然变大再以动画的方式慢慢变小,其实在真实的项目中,我们可能需要View在由大变小后又能由小变大,而不是如上图具有闪烁的效果,具体效果如下:
其实,要实现这种效果非常简单,只需修改xml中的一个属性值即可。
android:repeatMode="reverse"
设置完成后,即为如上显示方式。
这里对Android补间动画中的缩放动画讲解到此,相信通过此篇文章,对缩放动画的使用有全面的了解。