随时随地技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、QQ技术交流群(183198395)。

AnimationDrawable代表一个动画,在这里,本文只是先介绍一下如何定义AnimationDrawable资源,Android既支持传统的逐帧动画(类似于电影方式,一张图片、一张图片的切换)。也支持通过平移、变换计算出来的补间动画。下面介绍补间动画的定义。定义补间动画的XML资源文件以<set.../>元素作为根元素,该元素内可以指定如下四个元素:

alpha:设置透明度的改变

scale:设置图片进行缩放改变

translate:设置图片进行位移变换

rotate:设置图片进行旋转

定义补间动画的思路很简单:设置一张图片的开始状态(包括透明度、位置、缩放比、旋转度)、并设置该图片的结束状态(包括透明度、位置、缩放比、旋转度),再设置动画的持续时间,Android系统会使用动画效果把这张图片从开始状态变换到结束状态。

上面几个属性中都可以指定一个android:interpolator属性,该属性指定动画的变化速度,可以实现匀速、正加速、负加速、无规则变加速等,如:

linear_interpolator:匀速变换。

accelerate_interpolator:加速变换。

decelerate_interpolator:减速变换。

如果想让<set../>元素下所有的变换效果都使用相同的动画速度,则可指定 android:shareInterpolator="true"

请看下面实例:

Activity:

package com.lovo.activity;import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;public class TestAnimationActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);final ImageView image = (ImageView) findViewById(R.id.activity_main_image);// 加载动画资源final Animation anim = AnimationUtils.loadAnimation(this,R.anim.my_anim);// 设置动画结束后保留结束状态anim.setFillAfter(true);Button btn = (Button) findViewById(R.id.activity_main_btn);btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// 开始动画image.startAnimation(anim);}});}
}

布局XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><Buttonandroid:id="@+id/activity_main_btn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="开始动画"/><ImageView android:id="@+id/activity_main_image"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/image5"/>
</LinearLayout>

动画XML(anim/my_anim.xml):

<?xml version="1.0" encoding="utf-8"?>
<!-- linear_interpolator:匀速变换 -->
<set xmlns:android="http://schemas.android.com/apk/res/android"android:interpolator="@android:anim/linear_interpolator" ><!-- 定义透明度的变换 --><alphaandroid:duration="3000"android:fromAlpha="1"android:toAlpha="0.05" /><!-- 定义缩放变换 --><scaleandroid:duration="3000"android:fillAfter="true"android:fromXScale="1.0"android:fromYScale="1.0"android:pivotX="50%"android:pivotY="50%"android:toXScale="1.4"android:toYScale="0.6" /><!-- 定义位移变换 --><translateandroid:duration="3000"android:fromXDelta="10"android:fromYDelta="30"android:toXDelta="130"android:toYDelta="80" /><!-- 定义旋转变换 --><rotateandroid:duration="3000"android:fromDegrees="0"android:pivotX="50%"android:pivotY="50%"android:toDegrees="1800" /></set>

Android动画:AnimationDrawable资源的简单使用相关推荐

  1. android 自动替换资源文件,简单高效的实现Android App全局字体替换

    Android O推出了一项新的功能「Fonts in XML」,借助这项功能,我们能够像使用其他资源文件一样使用字体,比较方便地实现App全局字体的替换. 为了能够在API 14或者以上的设备上使用 ...

  2. Android动画实战-仿简聊App动画菜单

    在上一篇博客中,我们分析了Android中四大动画的基本介绍.使用方法.特征.还没有浏览的童靴看这里:Android动画之旅一Android动画基本介绍 本篇博客,我将和大家一起使用Android动画 ...

  3. 如何高效的学习Android动画

    前言 本篇文章就是在知乎回答的一个问题,这里记录下,以后看到我博客的朋友也可以看到. 曾经也同楼主一样,对Android中的动画不是很清楚,什么帧,Tween,属性等等,很多知识,也很琐碎,后来觉得动 ...

  4. 高效学习Android动画

    当时系统学习Android动画还有一部分原因:将来成为一个android组件开发工程师,如果想做出一些高性能,nice的动画就必须对动画的基础知识有深入的理解,因此就打算系统的学习一下.经过一段时间的 ...

  5. Android自定义控件:动画类---逐帧动画AnimationDrawable

    1:概述 Android动画包括View Animation(视图动画)和Property Animator(属性动画),而View Animation包括Tween Animation(补间动画)和 ...

  6. Android开发——SVGA格式动画内容资源替换

    Android开发--SVGA格式动画内容资源替换 随着接触的项目类型越来越多,目前格式个样的炫酷动画也随之而来,既然原生动画实现起来复杂,且有一个快捷灵活的动画为何不用呢,那让我们来好好学习一下如何 ...

  7. android 获取动画资源,Android动画资源(二)——补间动画资源

    Android animations.png Android动画资源系列文章:Android动画资源文件总结 Tween animation 用XML定义的动画,在图形上执行诸如旋转.透明度变化.移动 ...

  8. Android 动画简单理解

    2019独角兽企业重金招聘Python工程师标准>>> 官网参考 参考二 Android动画分为两大块: Property Animation(属性动画) View Animatio ...

  9. Android动画效果-更新中

    概述 Android系统提供了三种实现动画的方式,一种是补间动画(Tween Animation 在SDK中成为View Animation),另一种是帧动画(Frame Animation 在SDK ...

最新文章

  1. 接口与object的关系
  2. 异想-天开 python---while、for、if-else 循环学习
  3. 沙家浜《智斗》系列,孩儿版。三、棋手
  4. csdn无人驾驶汽车_无人驾驶汽车100年历史
  5. javafx2_JavaFX 2 GameTutorial第4部分
  6. java客户姓名添加和查找_java类与对象 演练 客户姓名添加与查看
  7. Page.FindControl方法找不到指定控件的原因
  8. LeetCode 265. 粉刷房子 II(DP)
  9. 360下载器怎么打开 360下载器使用方法
  10. 添加ClearWindow.py文件实现IDLE的清屏功能
  11. django.forms生成HTML,python – 在django中为表单自动生成表单字段
  12. 记录一下Android 长截屏功能
  13. spring boot 2.1.4 hibernate 二级缓存 Caffeine实现
  14. 同样是断言,为何 Hamcrest 如此优秀?
  15. 烽火fr2600怎么web登录_烽火R2600路由器配置步骤及脚本文件
  16. Windows Server 2008 R2 下载地址
  17. cocos2d - JS Sprite 镜像反转显示 ( Flipped )
  18. win32原生API实现OpenGL例子(无glew,glut等第三方依赖库)
  19. 博弈论 纳什均衡 囚徒困境 智猪博弈
  20. DirectX11 板条箱示例Demo

热门文章

  1. Android 计算屏幕尺寸
  2. 沉浸式状态栏设置的几种方式
  3. 调整计算机启动顺序,电脑双硬盘双系统bios调整硬盘启动顺序的图文教程
  4. Windows server 2012 远程连接关闭后用户被注销,导致OA系统异常
  5. C++读写Mysql数据库
  6. android播放器可点击列表,Android上是否有任何播放器可以支持播放列表中的本地视频并可以预设播放顺序?...
  7. 安科瑞Acrel EMS-HIW 可以解决那些高速公路运维问题
  8. Thinkphp数据库中文拼音order排序
  9. 安装Office2016,桌面没有PPT图标,右键新建没有图标
  10. Skytte:一款令人印象深刻的 HTML5 射击游戏