Android 动画知识总结

本文详细介绍了Android中的三种动画类型:View动画、帧动画和属性动画。View动画包括平移、缩放、旋转和透明度变化,适用于API 11之前。属性动画是API 11引入的新特性,允许对任意对象的属性进行动画操作,具有更强大的功能。文章还探讨了动画的工作原理,包括插值器、估值器和监听器,并提到了使用动画时的注意事项,如防止OOM和内存泄漏。
摘要由CSDN通过智能技术生成

动画

概述

Android中的动画可用分为 三 类: View 动画、帧动画、属性动画。

View动画 包括平移、缩放、旋转、透明度。支持自定义View滑动。

帧动画 通过播放一系列图像从而产生动画的效果。如果图片过大,很容易发生 oom 。

属性动画 通过改变View的属性而达到动画的效果(API 11 的新特性 3.0)

View动画

View动画分为四类:

  • TranslateAnimation(位移动画)
  • ScaleAnimation(缩放动画)
  • RotateAnimation(旋转动画)
  • AlphaAnimation(透明动画)

这四种动画 既可以通过xml 的形式定义,也可以通过 代码来动态的创建。

xml 的形式定义 需要在 res文件夹下新建 anim文件夹,然后创建xml文件。 即 res/anim/filename.xml

下面是四种动画的定义格式 以及 set 动画集。


<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration=" "
    android:shareInterpolator="[true | false]">


    <translate
        android:fromXDelta="float"
        android:toXDelta="float"
        android:fromYDelta="float"
        android:toYDelta="float"
        />

    <scale
        android:fromXScale="float"
        android:toXScale="float"
        android:fromYScale="float"
        android:toYScale="float"
        android:pivotX="float"
        android:pivotY="float"
        />


    <rotate
        android:fromDegrees="float"
        android:toDegrees="float"
        android:pivotX="float"
        android:pivotY="float"
        />


    <alpha android:fromAlpha="float"
        android:toAlpha="float"
        />


</set>

android:interpolator 表示动画集合所使用的插值器。

android:shareInterpolator 表示是否共享一个插值器。如果集合不指定插值器,那么子动画就需要单独指定所需的插值器或 使用默认值。

平移 ——> TranslateAnimation类。使一个View 在水平和竖直方向上完成平移的动画效果。属性含义:

  • android:fromXDelta=”float” 表示x 的起始值,比如0;
  • android:toXDelta=”float” 表示 y 的起始值,比如100;
  • android:fromYDelta=”float” 表示 y 的 其实值;
  • android:toYDelta=”float” 表示 y 的结束值

缩放动画 ——> ScaleAnimation。使一个View 具有放大或者缩小的动画效果。 属性含义:

  • android:fromXScale=”float” 表示水平方向缩放的起始值,比如 0.5;
  • android:toXScale=”float” 表示水平方向缩放的结束值,比如 1.2;
  • android:fromYScale=”float” 表示竖直方向缩放的起始值;
  • android:toYScale=”float” 表示竖直方向缩放的结束值;
  • android:pivotX=”float” 表示缩放轴点的x坐标。会影响缩放效果
  • android:pivotY=”float” 表示缩放轴点的y坐标. 会影响缩放效果

默认是 View的中心点。

旋转动画 ——> RotateAnimation 使一个View 具有旋转的动画效果。属性含义:

  • android:fromDegrees=”float” 旋转的开始的角度,比如 0
  • android:toDegrees=”float” 旋转的结束角度,比如 180
  • android:pivotX=”float” 旋转的轴点的x坐标
  • android:pivotY=”float” 旋转的轴点的y坐标

旋转的轴点会影响到旋转的具体效果。轴点即 旋转轴,View围绕这旋转轴旋转。

透明度动画 ——> AlphaAnimation 改变View的透明度。 属性含义:

  • android:fromAlpha=”float” 透明度的起始值,比如 0.1
  • android:toAlpha=”float” 透明度的结束值,比如 1.

android:duration=” “ 表动画的时长。

android:fillAfter=”true” 动画执行完毕是否保持。

代码中如何加载呢??

通过AnimationUtils.loadAnimation(this,R.anim.xxx) 来加载。并调用控件的startAnimation来开启一个动画。

除了使用Xml 的形式也可以通过 代码去动态的创建一个动画。 传递的参数和属性一样。不再赘述。

动画的相关Listener回调

 public static interface AnimationListener {

        void onAnimationStart(Animation animation);

        void onAnimationEnd(Animation animation);

        void onAnimationRepeat(Animation animation);
    }
自定义View动画

需要继承自 Animation 这个抽象类。 重写它的 initialize 和 applyTransformation 方法。

applyTransformation 中进行相应的矩阵变换。很多时候采用 Camera 来简化矩阵的变换过程。

可以参看 ApiDemo 中的动画实现。 比如 Rotate3dAnimation.

帧动画

帧动画 —— 顺序播放一组预先定义好的图片。类似电影播放。 AnimationDrawable. 在res/drawable 下创建 xx.xml 文件

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="xx" android:duration="200"/>
    <item android:drawable="xx" android:duration="200"/>
    <item android:drawable="xx" android:duration="200"/>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值