#Android笔记#Android动画总结(一) 视图动画之补间动画

Android动画可以分为视图动画和属性动画,视图动画又可以分为补间动画和帧动画,分类图如下:

今天就来先总结一下视图动画。

视图动画出现于Android1.0时代,顾名思义,它主要作用于视图View,可以细分为补间动画和帧动画;

补间动画:

一、概念

1、动画开始的样式(位置、状态等)与动画结束的样式(位置、状态等)是由开发者设置的,而变化过程由系统来补全;

2、补间动画可以实现View的平移、翻转、缩放以及透明度等变化;

3、支持java和xml两种方式进行设置;

4、后执行的动画会把前面的动画替代;

5、使用animationSet进行组合动画时,所有的动画效果会同时执行,无法为其设置前后顺序;

6、补间动画的效果只是视觉上的改变,并没有真正改变View的属性,并且在动画执行过程中,View是无法在动画路径上完成点击等相关操作的;

二、动画分类

三、具体应用

1、5种变换都继承于Animation,因此有一些公用的方法,下面列举一些常用的属性及对应的方法:

2、平移变换

2.1、构造函数

2.1.1、public TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)

2.1.2、public TranslateAnimation(int fromXType, float fromXValue, int toXType, float toXValue,int fromYType, float fromYValue, int toYType, float toYValue) 

2.2 代码实现

2.2.1、纯java实现:

translateAnimation = new TranslateAnimation(0,100,0,100);
translateAnimation.setDuration(3000);
translateAnimation.start();

2.2.2、XML配置:

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="5000"
    android:fromXDelta="0"
    android:fromYDelta="0"
    android:toXDelta="150"
    android:toYDelta="150"
    />
Animation animation = AnimationUtils.loadAnimation(context, R.anim.translate_anim);
tvAnim.startAnimation(animation);

2.3、效果展示:

3、缩放动画

3.1、构造函数

3.1.1、public ScaleAnimation(float fromX, float toX, float fromY, float toY, float pivotX, float pivotY) 

3.1.2、public ScaleAnimation(float fromX, float toX, float fromY, float toY,int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)

3.2、代码实现:

3.2.1、纯Java实现:

 ScaleAnimation scaleAnimation = new ScaleAnimation(1.0f,1.5f,1.0f,1.5f,
                Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
 scaleAnimation.setDuration(3000);
 scaleAnimation.start();

3.2.2、XML实现:

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="3000"
    android:fromXScale="1"
    android:fromYScale="1"
    android:pivotX="0%"
    android:pivotY="0%"
    android:toXScale="1.5"
    android:toYScale="1.5"/>
Animation animation = AnimationUtils.loadAnimation(context, R.anim.scale_anim);
tvAnim.startAnimation(animation);

3.3、动画展示

4、翻转动画

4.1、构造函数

4.1.1、public RotateAnimation(float fromDegrees, float toDegrees, float pivotX, float pivotY)

4.1.2、public RotateAnimation(float fromDegrees, float toDegrees, int pivotXType, float pivotXValue,int pivotYType, float pivotYValue)

4.2、代码实现

4.2.1、纯Java实现:

rotateAnimation = new RotateAnimation(0,90,Animation.RELATIVE_TO_SELF,
                0.5f,Animation.RELATIVE_TO_SELF,0.5f);
rotateAnimation.setDuration(3000);
rotateAnimation.start();

4.2.2、XML配置:

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:toDegrees="90"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="3000"
    />
animation = AnimationUtils.loadAnimation(context, R.anim.rotate_anim);
tvAnim.startAnimation(animation);

4.3、动画展示:

5、透明度动画

5.1、构造函数

5.1.1、public AlphaAnimation(float fromAlpha, float toAlpha)

5.2、代码实现

5.2.1、纯Java实现:

 alphaAnimation = new AlphaAnimation(1.0f,0.2f);
 alphaAnimation.setDuration(3000);
 alphaAnimation.start();

5.2.2、XML配置

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromAlpha="1"
    android:toAlpha="0.2"
    android:duration="3000"
    >
</alpha>
 animation = AnimationUtils.loadAnimation(context, R.anim.alpha_anim);
 tvAnim.startAnimation(animation);

5.3、动画展示:

6、组合动画

组合动画就是将以上的动画方式结合起来,形成一个组合的动画效果;

6.1、代码实现

6.1.1、纯Java实现:


//实例化AnimationSet,参数为shareInterpolator,如果为true,组合中的动画将公用AnimationSet的插值器,否则则使用每个动画本身的插值器;
animationSet = new AnimationSet(true);
animationSet.addAnimation(scaleAnimation);
animationSet.addAnimation(rotateAnimation);
animationSet.setDuration(10000);
tvAnim.startAnimation(animationSet);

6.1.2、XML配置

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <rotate
        android:fromDegrees="0"
        android:toDegrees="90"
        android:pivotX="50%"
        android:pivotY="50%"
        android:duration="3000"
        />

    <scale
        android:duration="3000"
        android:fromXScale="1"
        android:fromYScale="1"
        android:pivotX="0%"
        android:pivotY="0%"
        android:toXScale="1.5"
        android:toYScale="1.5"/>
</set>
 animation = AnimationUtils.loadAnimation(context,R.anim.anim_set);
 tvAnim.startAnimation(animationSet);

6.2、效果展示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值