近一周以来一直在搞android动画,被android动画搞的焦头烂额,不过最艰难的时间已经过去,现在写一篇博客,来给自己做一个梳理和总结。

Android 3.0以后新增了属性动(property animation),至此Android包含三种动画类型,即补间动画(Tween Animation),逐帧动画(Drawable animation),属性动画(Property animation),今天这篇博客着重对属性动画做一个详细阐述。

  1. 补间动画(Tween Animation)

    补间动画类似于之前学过的Flash动画,设定好初始帧和结束帧以后,中间的值由系统自动进行插值,然后可以形成一种动画效果,补间动画需要用户设定好初始值和结束值,系统自动计算之间值。对于这种动画来说,建议用户使用XML文件配置动画,anim.xml文件应存放于res/anim文件夹下,xml文件必须以<alpha><scale><translate><rotate><set>作为根元素。官方文件中提供的xml示例代码:

<set android:shareInterpolator="false">    <scale        android:interpolator="@android:anim/accelerate_decelerate_interpolator"        android:fromXScale="1.0"        android:toXScale="1.4"        android:fromYScale="1.0"        android:toYScale="0.6"        android:pivotX="50%"        android:pivotY="50%"        android:fillAfter="false"        android:duration="700" />    <set android:interpolator="@android:anim/decelerate_interpolator">        <scale           android:fromXScale="1.4"           android:toXScale="0.0"           android:fromYScale="0.6"           android:toYScale="0.0"           android:pivotX="50%"           android:pivotY="50%"           android:startOffset="700"           android:duration="400"           android:fillBefore="false" />        <rotate           android:fromDegrees="0"           android:toDegrees="-45"           android:toYScale="0.0"           android:pivotX="50%"           android:pivotY="50%"           android:startOffset="700"           android:duration="400" />    </set>

让动画跑起来也是十分简单的,定义好动画xml文件以后,使用如下代码使用对象和动画的绑定

ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage);Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, 动画文件);spaceshipImage.startAnimation(hyperspaceJumpAnimation);

补间动画只是启动空间显示的位置,但是没有移动或者改变空间在布局当中实际文字,例如一个Button在空间中的位置(100,100),X轴方向移动n个单位以后,Button实际位置依然在(100,100)。

2. 逐帧动画(Frame animation)

逐帧动画类似于电影播放的原理,一个图片资源代表一帧,以一定时间间隔进行切换图片资源,形成一种动画效果。一般情况下,逐帧动画也是通过xml文件定义的,下面是官方提供的一个示例代码:

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"    android:oneshot="true">    <item android:drawable="@drawable/rocket_thrust1" android:duration="200" />    <item android:drawable="@drawable/rocket_thrust2" android:duration="200" />    <item android:drawable="@drawable/rocket_thrust3" android:duration="200" /></animation-list>

其中有一个属性是非常重要的,android:oneshot="true",若为true,则代表动画完成以后,停留在最后一帧,反之停留在第一帧。

让动画开始也是非常简单的,看官方代码:

AnimationDrawable rocketAnimation;

public void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.main);

  ImageView rocketImage = (ImageView) findViewById(R.id.rocket_p_w_picpath);  rocketImage.setBackgroundResource(R.drawable.rocket_thrust);  rocketAnimation = (AnimationDrawable) rocketImage.getBackground();}

public boolean onTouchEvent(MotionEvent event) {  if (event.getAction() == MotionEvent.ACTION_DOWN) {    rocketAnimation.start();    return true;  }  return super.onTouchEvent(event);}

有一点是非常重要的,不能在onCreate()函数中启动动画,因为在OnCreate函数中,AnimationDrawable还没有完全和window连接起来,所以如果你想一开始就加载动画,可以在 onWindowFocusChanged()  启动动画。

转载于:https://blog.51cto.com/6687431/1426209

Android_之动画1相关推荐

  1. Android_动画_旋转、平移、缩放、渐变

    Android_动画_旋转.平移.缩放.渐变 效果图 需要的文件 AndroidManifest.xml <?xml version="1.0" encoding=" ...

  2. Android 实现扑克牌动画,Android_开发_Day10_扑克游戏

    Android_开发day10扑克游戏 目的: 通过写一些小游戏来增加学习中的乐趣,同时也是对前面学习的一些知识的一些整合. 技术: <1> 单例设计模式:所谓的单例设计模式就是创造一个对 ...

  3. Android_网络获取+动画

    /*** 1, (25分) 实现ViewPager + Fragment ,切换页面, 3个Fragment;2, (25分) 第一个Fragment中, 通过xUtils 获取网络数据, 展示到Re ...

  4. android 绘制控件,Android_开发_Day29_自己绘制控件

    Android_开发Day29自己绘制控件 目的: 在Android中很多时候系统的控件是不能满足需要的,组合方式定义控件又非常繁琐,因此此时需要自己画一个控件,才能满足需要 技术: <1> ...

  5. Android Animation (安卓动画)概念简介

    Android Animation Android 四种动画分别为逐帧动画和补间动画.属性动画.过渡动画: Frame Animation (逐帧动画) 实现方式:xml 和 Java代码 图片跳转的 ...

  6. Android动画之帧动画和补间动画

    Android系统提供三种动画:帧动画.补间动画和属性动画.这里先分析总结帧动画和补间动画. FrameAnimation 帧动画,通俗来说就是按照图片动作顺序依次播放来形成动画,创建帧动画可以用 x ...

  7. Android 动画 ViewPropertyAnimator 的使用

    ViewPropertyAnimator 说明: ViewPropertyAnimator 可为View对象上的选择属性启用自动和优化的动画, ViewPropertyAnimator 不是由调用方构 ...

  8. Android ViewAnimationUtils (动画) 的使用

    先看下ViewAnimationUtils  实现的几个常见的效果图如下: ViewAnimationUtils  的作用: 设置剪切圆动画的动画制作器 一般的使用如下: Animator revea ...

  9. Android AnimationUtils (动画)的使用

    AnimationUtils  其实就是补间动画(Tween Animation) 在xml 中的写了动画java 中调用 这边打算就写一个demo 简答的记录下它的使用详细的请看 点击查看,这篇博客 ...

最新文章

  1. 黄金矿工-收益最大化
  2. js便利json 数组的方法
  3. db2 replace函数的用法_SQL基础知识:常用字符处理函数
  4. Hadoop入门(七)Mapreduce高级Shuffle
  5. Apache Camel 2.18发布–包含内容
  6. 线程协作-CountDownLatch
  7. 荣耀Play3新版曝光:麒麟710A加持 其他配置不变
  8. 每晚有1700万人逛淘宝但什么都不买,马云:我们仍可以靠他们赚钱
  9. tensorflow--forword(前向传播)
  10. 主播助理的三种常见工作类型
  11. JSP servlet的配置与使用
  12. No module named ‘pyqt5‘解决办法
  13. 红外解码--基于1838红外接收头
  14. linux下高性能服务器pdf,Linux高性能服务器编程(pdf+epub+mobi+txt+azw3)
  15. java数据库驱动加载失败_Java连接数据库,成功加载SQL驱动程序,但数据库连接失败...
  16. [机缘参悟-1] - 活在当下,仰望星空,梦在梦里,俯视天下
  17. centos虚拟机上网慢的问题
  18. 40种让孩子爱上阅读的好方法!转给家长
  19. 三种页面置换算法(详解)
  20. conda install安装不了任何包,一直下载一直错

热门文章

  1. 主成分分析(PCA)——matlab程序及函数详解
  2. mysql复购率_MYSQL系列(5) 电商常用指标查询
  3. @transactional可以用在controller层吗_Spring还可以这样用缓存,你知道吗?
  4. fatal: git-write-tree: error building trees
  5. 2D Fast Marching Computations
  6. Lesson 3 Part 1 Locally weighted regression
  7. 零基础入门语义分割——Task2 数据扩增
  8. 国内最强算法推荐系统,这波稳了!
  9. tensorflow2实现unet, 完成眼底血管分割任务
  10. 学了一年matlab,我到现在还不会读论文~