zoukankan      html  css  js  c++  java
  • Android 动画资源详解

    属性动画:

    • 使对象的属性值在一定时间间隔内变化到某一个值。
    • http://developer.android.com/guide/topics/resources/animation-resource.html#Property

    资源目录:recanimator

        <set xmlns:android="http://schemas.android.com/apk/res/android"
            android:ordering="sequentially" >   // together|sequentially
    
            <objectAnimator
                android:duration="2000"
                android:propertyName="y"
                android:valueTo="300"
                android:valueType="intType" />
    
            <objectAnimator
                android:duration="3000"
                android:propertyName="x"
                android:valueTo="220"
                android:valueType="intType" />
    
        </set> 
    

    创建对应用的属性类

        class Move
        {
            private int y;
            private int x;
    
            public int getY()
            {  
                return y;
            }
    
            public void setY(int y)
            {
                this.y = y;
                button.layout(button.getLeft(), y, button.getRight(),
                        y + button.getMeasuredHeight());
            }
    
            public int getX()
            {
                return x;
            }
    
            public void setX(int x)
            {
                this.x = x;
                button.layout(x, button.getTop(), x + button.getMeasuredWidth(),
                        button.getBottom());
            }
    
        }
    

    装载资源并执行动画

        // 装载属性动画资源
        AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(this,
                R.animator.property_anim);
        // 设置要控制的对象
        set.setTarget(move);
        // 开始动画
        set.start();
    

    帧动画:

    • 在高频率地连续播放静态图像时就会产生动画的效果
    • http://developer.android.com/guide/topics/resources/animation-resource.html#Frame

    资源目录:res/drawable/

    • 帧动画必须用<animation-list>标签作为根节点
    • android:oneshot="false"为无限循环播放,android:oneshot="true":播放一次
    • 第一个表示一个静态图像
    • android:duration="100":指定当前图像停留的时间

    例子一:

    <animation-list xmlns:android="http://schemas.android.com/apk/res/android"
        android:oneshot="false">
        <item android:drawable="@drawable/myanim1" android:duration="20" />
        <item android:drawable="@drawable/myanim2" android:duration="20" />
        <item android:drawable="@drawable/myanim3" android:duration="20" />
        <item android:drawable="@drawable/myanim4" android:duration="20" />
        <item android:drawable="@drawable/myanim5" android:duration="20" />
        <item android:drawable="@drawable/myanim6" android:duration="20" />
    </animation-list>
    

    补间动画:

    • 在高频率地连续播放静态图像时就会产生动画的效果(res/anim)
    • http://developer.android.com/guide/topics/resources/animation-resource.html#Tween

    资源目录:res/anim/

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@[package:]anim/interpolator_resource"
        android:shareInterpolator=["true" | "false"] >
        <alpha
            android:fromAlpha="float"
            android:toAlpha="float" />
        <scale
            android:fromXScale="float"
            android:toXScale="float"
            android:fromYScale="float"
            android:toYScale="float"
            android:pivotX="float"
            android:pivotY="float" />
        <translate
            android:fromXDelta="float"
            android:toXDelta="float"
            android:fromYDelta="float"
            android:toYDelta="float" />
        <rotate
            android:fromDegrees="float"
            android:toDegrees="float"
            android:pivotX="float"
            android:pivotY="float" />
        <set>
            ...
        </set>
    </set>
    

    动画渲染器

    定义:被用来修饰动画效果,定义动画的变化率,可以使存在的动画效果accelerated(加速),decelerated(减速),repeated(重复),bounced(弹跳)等。

    • AccelerateDecelerateInterpolator 在动画开始与介绍的地方速率改变比较慢,在中间的时候加速
    • AccelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始加速
    • AnticipateInterpolator 开始的时候向后然后向前甩
    • AnticipateOvershootInterpolator 开始的时候向后然后向前甩一定值后返回最后的值
    • BounceInterpolator 动画结束的时候弹起
    • CycleInterpolator 动画循环播放特定的次数,速率改变沿着正弦曲线
    • DecelerateInterpolator 在动画开始的地方快然后慢
    • LinearInterpolator 以常量速率改变
    • OvershootInterpolator向前甩一定值后再回到原来位置
  • 相关阅读:
    BZOJ3518 : 点组计数
    BZOJ2217 : [Poi2011]Lollipop
    李洪强经典面试题40-可能碰到的iOS笔试面试题-C语言
    对AFN的二次封装
    李洪强经典面试题39-iOS 程序员 6 级考试(答案和解释)
    iOS五种本地缓存数据方式
    iOS开发网络篇—数据缓存
    iOS中的通知
    李洪强漫谈iOS开发[C语言-048]-打印平方表
    李洪强漫谈iOS开发[C语言-047]-数列求和
  • 原文地址:https://www.cnblogs.com/liyanggzy/p/3748254.html
Copyright © 2011-2022 走看看