美文网首页
属性动画的学习

属性动画的学习

作者: 简单Liml | 来源:发表于2018-04-17 15:32 被阅读16次

参考链接:https://www.jianshu.com/p/d23f58f4368d

在android 3.0开始,系统提供一种全新的动画模式--属性动画。
下面是对属性动画代码展示。

1.平移
ObjectAnimator animator1 = ObjectAnimator.ofFloat(iv, "translationX", 0f, -300f, 0f);
2.透明度
ObjectAnimator animator2 = ObjectAnimator.ofFloat(iv, "alpha", 1f, 0f, 1f);
3.旋转
ObjectAnimator animator3 = ObjectAnimator.ofFloat(iv, "rotation", 0f, 360f, 0f);
4.缩放
ObjectAnimator animator4 = ObjectAnimator.ofFloat(iv, "scaleX", 1f, 2f, 1f);

//使用下面代码展示
animator.setDuration(2000);
animator.setStartDelay(1000);
animator.setRepeatCount(-1);
animator.start();

可以把上面的动画集合展示

AnimatorSet set = new AnimatorSet();
set.play(animator1).with(animator2).with(animator3).before(animator4);
//都设置3s,也可以为每个单独设置
set.setDuration(3000);
set.start();

也可使用xml文件展示动画。在res文件夹下创建animator文件夹。在文件夹下创建下列文件.

alpha.xml:

<?xml version="1.0" encoding="utf-8"?>
<objectAnimator
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="2000"
    android:propertyName="alpha"
    android:repeatCount="-1"
    android:repeatMode="reverse"
    android:valueFrom="0.5"
    android:valueTo="1"
    android:valueType="floatType"/>

rotation.xml:

<?xml version="1.0" encoding="utf-8"?>
<objectAnimator
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:valueFrom="0"
    android:valueTo="360"
    android:duration="2000"
    android:propertyName="rotation"
    android:valueType="floatType" />

scale_x.xml

<?xml version="1.0" encoding="utf-8"?>
<objectAnimator
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="2000"
    android:propertyName="scaleX"
    android:valueFrom="1"
    android:valueTo="1.5"
    android:valueType="floatType" />

translation_x.xml

<?xml version="1.0" encoding="utf-8"?>
<objectAnimator
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="2000"
    android:propertyName="translationX"
    android:repeatCount="-1"
    android:repeatMode="reverse"
    android:valueFrom="0"
    android:valueTo="200"
    android:valueType="floatType" />

动画集合 animset.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:ordering="sequentially">
    <set>
        <objectAnimator
            android:duration="4000"
            android:propertyName="rotation"
            android:repeatMode="reverse"
            android:valueFrom="0"
            android:valueTo="360" />
        <set android:ordering="sequentially">
            <objectAnimator
                android:duration="2000"
                android:propertyName="translationX"
                android:repeatMode="reverse"
                android:valueFrom="0"
                android:valueTo="200" />
            <objectAnimator
                android:duration="2000"
                android:propertyName="translationX"
                android:repeatMode="reverse"
                android:valueFrom="200"
                android:valueTo="0" />
        </set>
    </set>
    <set >
        <objectAnimator
            android:duration="4000"
            android:propertyName="rotation"
            android:repeatMode="reverse"
            android:valueFrom="0"
            android:valueTo="360" />
        <set android:ordering="sequentially">
            <objectAnimator
                android:duration="2000"
                android:propertyName="translationX"
                android:repeatMode="reverse"
                android:valueFrom="0"
                android:valueTo="-200" />
            <objectAnimator
                android:duration="2000"
                android:propertyName="translationX"
                android:repeatMode="reverse"
                android:valueFrom="-200"
                android:valueTo="0" />
        </set>
    </set>
</set>

使用代码加载并展示:

Animator animator = AnimatorInflater.loadAnimator(this, R.animator.alpha);
// Animator animator = AnimatorInflater.loadAnimator(this, R.animator.rotation);
// Animator animator = AnimatorInflater.loadAnimator(this, R.animator.scale_x);
// Animator animator = AnimatorInflater.loadAnimator(this, R.animator.translation_x);
// Animator animator = AnimatorInflater.loadAnimator(this, R.animator.animset);
animator.setTarget(iv);
animator.start();

相关文章

  • Android属性动画(三) TimeInterpolator(

    OK,继续学习属性动画,本篇文章是属性动画系列的第三篇文章了,今天来学习一下属性动画中的TimeInterpola...

  • Android中补间动画和属性动画

    目的 区分Animation(补间动画)和Animator(属性动画)的区别,加强对属性动画的学习 相关技术、及其...

  • Android中的动画实践之属性动画(一 )

    接着上篇Android中的动画(XML方式)实践(逐帧动画与补间动画)来学习下属性动画。 我们知道属性...

  • Android开发学习——Day25(属性动画)

    学习目的 掌握属性动画的使用方法,实现真正意义上的“动画”。 学习过程 理解属性动画的本质,熟悉其方法,对其灵活使...

  • 属性动画的学习

    参考链接:https://www.jianshu.com/p/d23f58f4368d 在android 3.0开...

  • Android 动画基础知识学习(下)

    学习资料:Android开发艺术探索和Animation的api 1.属性动画 属性动画可以对任意对象的属性进行动...

  • 属性动画学习使用总结

    Android 属性动画总结 属性动画的优点 属性动画的使用步骤 实例化属性动画对象 设置属性动画的时长 启动属性...

  • 安卓自定义动画

    本篇简书主要总结一下今天学习自定义动画效果的知识点,学习内容主要包括 1.补间动画和属性动画的区别 2.属性动画的...

  • Android动画总结

    本文总结常用属性方法等,详细学习可使用如下郭霖大神文章: Android属性动画完全解析(上),初识属性动画的基本...

  • 绘制基础(五)- 属性动画

    平时业务基本不涉及动画,这里记录下动画的学习收获 属性动画:根据View的属性去做动画,逐渐的一点一点的去改变Vi...

网友评论

      本文标题:属性动画的学习

      本文链接:https://www.haomeiwen.com/subject/vgmvaxtx.html