Android动画基础:View动画(平移+缩放+旋转+透明度)

学习并整理了下Android动画相关知识,掌握思想,摆脱遇到需求到处百度的场景。

目录

1、动画分类

2、View动画的种类

3、View动画的属性介绍

4、View动画应用(实战)

Java测试代码。

动画XML文件定义:

5、小结


1、动画分类

View动画(本文重点)

帧动画(容易报OOM)

属性动画(API 11以上支持),以下可使用 NineOldAndroids开源动画库


2、View动画的种类

View动画分为四类,平移+缩放+旋转+透明度,XML文件标签和Java代码类对应关系如下:

平移: <translate>    TranslateAnimation.java

缩放: <scale>         ScaleAnimation.java

旋转: <rotate>         RotateAnimation.java

透明度: <alpha>      AlphaAnimation.java

说明:四个Java文件的位置位于android.view.animation下,这与后面的属性动画(相关类位于android.animation下)注意区分!


3、View动画的属性介绍

公共属性可以划分三大类:第一类:from-to;第二类:pivot轴心;第三类:其他,如持续时间,是否重复,重复样式。

第一类:from-to。以平移为例,X轴的的两个属性为

android:fromXDelta="int"
android:toXDelta="int"

第二类:pivot轴心。缩放和旋转有轴心。两样分X轴和Y轴:

android:pivotX="100%"
android:pivotY="50%"

注:当我第一次写成1和0.5时,轴心不是中间。必须是加了百分号的,否则,它理解为px值作为轴心。

第三类:其他。可查看API文档

android:repeatCount="-1"    //-1表示无限次,0为默认值,>0则表示具体次数
android:repeatMode="reverse"    //两个取值:reverse和restart
android:duration="1000"        //一次动画经历(持续)的时间

4、View动画应用(实战)

Java测试代码。

//mainActivity.java
img1 = findViewById(R.id.img1);
        img2 = findViewById(R.id.img2);
        img3 = findViewById(R.id.img3);
        img4 = findViewById(R.id.img4);
        btn = findViewById(R.id.toActivityBtn);

        Animation translateAnim = AnimationUtils.loadAnimation(this,R.anim.translate_animation);
        translateAnim.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {
            }

            @Override
            public void onAnimationEnd(Animation animation) {

            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });
        img1.startAnimation(translateAnim);

        Animation scaleAnim = AnimationUtils.loadAnimation(this,R.anim.scale_anim);
        img2.startAnimation(scaleAnim);

        Animation rotateAnim = AnimationUtils.loadAnimation(this,R.anim.rotate_anim);
        img3.startAnimation(rotateAnim);

        Animation alphaAnim = AnimationUtils.loadAnimation(this,R.anim.alpha_anim);
        img4.startAnimation(alphaAnim);

上述代码块掌握三个知识点即可:

第一,使用AnimationUtils.loadAnimation加载XML获取动画类。

第二,View对象使用.starAnimation开启动画。

第三,Animation可以设置动画监听,内有三个状态函数。

动画XML文件定义:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="true"
    android:ordering="together">
    <translate
        android:fromXDelta="-120"
        android:fromYDelta="0"
        android:toXDelta="120"
        android:toYDelta="0"
        android:duration="1000"
        android:repeatCount="-1"
        android:repeatMode="reverse"/>

</set>
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXScale="0.6"
    android:fromYScale="1"
    android:toXScale="1.2"
    android:toYScale="1"
    android:pivotX="100%"
    android:pivotY="50%"
    android:repeatCount="-1"
    android:repeatMode="reverse"
    android:duration="1000"/>
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:toDegrees="30"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="500"
    android:repeatCount="-1"
    android:repeatMode="reverse"
    />
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromAlpha="1"
    android:toAlpha="0"
    android:duration="500"
    android:repeatCount="-1"
    android:repeatMode="reverse"
    />

5、小结

本篇内容结束,介绍总结了下基础View动画的四类,下篇整理有关自定义View动画(3D)和帧动画的内容。

学习资料参考:《Android开发艺术探索》+API文档

发布了34 篇原创文章 · 获赞 12 · 访问量 3万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览