android笔记之动画效果篇

android中的动画包括两种:
一.逐帧动画:就是一帧一帧的来播放图片
动画的效果实现:

1.设置xml文件,并设置文件参数
2.调用动画xml文件

举个例子:
设置xml文件:

<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/img001" android:duration="60"></item>
    <item android:drawable="@drawable/img002" android:duration="60"></item>
    <item android:drawable="@drawable/img003" android:duration="60"></item>
    <item android:drawable="@drawable/img004" android:duration="60"></item>
    <item android:drawable="@drawable/img005" android:duration="60"></item>
    <item android:drawable="@drawable/img006" android:duration="60"></item>
</animation-list>

可以看出标签是animation-list开头,之后加item标签drawble来指定路径,duration来指定显示时间。
接下来调用xml文件即可:如在layout中设置background属性为此xml文件。
以上就是逐帧动画
—-----------------------------------------------------------------------------------------------------------------------------------
二.补间动画:就是给出最后一帧和第一帧,其他帧系统自动补全。
补间动画的实现方法和上面差不多,也是先创建xml文件,之后调用xml文件。
一般来说有4种:包括AlphaAnimation(透明度海渐变动画)、RotateAnimation(旋转动画)、ScaleAnimation(缩放动画)、TranslateAnimation(平移动画)。我们分别来介绍:
创建一个anim资源文件,用于存放动画文件。
1.AlphaAnimation(透明度海渐变动画)

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="2000" >
    <alpha 
        android:fromAlpha="1" 
        android:toAlpha="0"/>
</set>

可发现是通过set标签来设置,补间动画的效果设置都是通过set标签来实现,其中duration表示所需时间;之后在通过alpha标签来设置透明度海渐变,fromAlpha是指从"1"开始,toAlpha表示到"0"结束,其中1表示完全不透明,0表示完全透明。
之后在调用即可。
如设置一个ImageView为其设置一张图片,调用imageview的startAnimation方法

Animation animation= AnimationUtils.loadAnimation(MainActivity.this,R.anim.alpha);
  imageView.startAnimation(animation);

2.RotateAnimation(旋转动画)
用法和alpha差不多

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

其中duration表示所需时间;之后在通过rotate 标签来设置旋转,fromDegrees是指从"0"度开始,toDegrees表示到"360"度结束,pivotX表示以横坐标的一半为旋转中心,pivotY表示以纵坐标的一半为旋转中心。
之后在调用即可。
如设置一个ImageView为其设置一张图片,调用imageview的startAnimation方法

Animation animation= AnimationUtils.loadAnimation(MainActivity.this,R.anim.rotate);
  imageView.startAnimation(animation);

3.ScaleAnimation(缩放动画)
用法和alpha差不多

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="5000">
    <scale android:fromXScale="1" android:fromYScale="1"
           android:toXScale="6" android:toYScale="6"
           android:pivotX="50%" android:pivotY="50%"/>
</set>

其中duration表示所需时间;之后在通过scale标签来设置旋转,fromXScale是指从横坐标缩放度为1开始,fromYScaleto是指从纵坐标缩放度为1开始,toXScale指到横坐标缩放度为6结束,toYScale指到纵坐标缩放度为6结束,pivotX表示以横坐标的一半为缩放中心,pivotY表示以纵坐标的一半为缩放中心。(其中缩放度1就表示1倍,6表示6倍)
之后在调用即可。
如设置一个ImageView为其设置一张图片,调用imageview的startAnimation方法

Animation animation= AnimationUtils.loadAnimation(MainActivity.this,R.anim.scale);
  imageView.startAnimation(animation);

4.TranslateAnimation(平移动画)
用法和alpha差不多

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:repeatMode="reverse" 
    android:duration="2000">
    <translate
        android:repeatCount="infinite"
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:toXDelta="300"
        android:toYDelta="300"/>
</set>

其中duration表示所需时间;之后在通过translate标签来设置旋转,fromXDelta是指从横坐标0处开始移动,fromYDelta是指从纵坐标0处开始移动,toXDelta指到横坐标到300结束,toYDelta指到纵坐标到300结束,repeatCount表示循环次数(infinite代表无限循环),repeatMode循环方式(reverse表示反向,restart表示重新开始)。
之后在调用即可。
如设置一个ImageView为其设置一张图片,调用imageview的startAnimation方法

Animation animation= AnimationUtils.loadAnimation(MainActivity.this,R.anim.translate);
  imageView.startAnimation(animation);
发布了18 篇原创文章 · 获赞 8 · 访问量 375

猜你喜欢

转载自blog.csdn.net/qq_34423913/article/details/103996270
今日推荐