1、简介

在上一篇,简要的介绍了Android动画分类及基本区别,本篇文章将会详细接收Android补间动画中的缩放动画各种使用方法,方便自己及广大开发人员在需要时快速查看。

话不多说,我们先以一个GIF图来展示具体效果。

android 动画 展开 收起 xml_动画

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在由大变小后又能由小变大,而不是如上图具有闪烁的效果,具体效果如下:

android 动画 展开 收起 xml_Android_02

其实,要实现这种效果非常简单,只需修改xml中的一个属性值即可。

android:repeatMode="reverse"

设置完成后,即为如上显示方式。

这里对Android补间动画中的缩放动画讲解到此,相信通过此篇文章,对缩放动画的使用有全面的了解。