原文地址:android animator 动画

animator 动画

动画的作用是让UI有动感, 看上去时尚。
Android中动画分两种方式:

一种方式是补间动画Tween Animation,就是说你定义一个开始和结束,中间的部分由程序运算得到。
另一种叫逐帧动画Frame Animation,就是说一帧一帧的连起来播放就变成了动画。
动画可以实现的效果
1. 移动(Translation)
2. 透明度(alpha)
3. 旋转(rotate)
4. 缩放 (scale)
现在分别用例子来讲解:以下的实现都是用代码实现的(ObjectAnimator)
1. 移动(Translation)
主要代码

[java]  view plain copy
  1. AnimatorSet set = new AnimatorSet() ;
  2. ObjectAnimator anim = ObjectAnimator .ofFloat(phone, "translationX", -500f, 0f);
  3. anim.setDuration(2000);
  4. ObjectAnimator anim3 = ObjectAnimator .ofFloat(phone, "translationX", 0f, -500f);
  5. anim3.setDuration(2000);
  6. ObjectAnimator anim2 = ObjectAnimator .ofFloat(phone, "translationY", 0f, -500f);
  7. anim2.setDuration(2000);
  8. ObjectAnimator anim4 = ObjectAnimator .ofFloat(phone, "translationY", -500f, 0f);
  9. anim4.setDuration(2000);
  10. AnimatorSet set3 = new AnimatorSet();
  11. set3.play(anim4).before(anim3) ;
  12. AnimatorSet set2 = new AnimatorSet();
  13. set2.play(anim2).before(set3) ;
  14. set.play(anim).before(set2);
  15. set.start();
讲解:anim 是从-500f 位置移动到当前位置(X轴); 
    anim3是从当前位置移动到-500f的位置(X轴);
    anim2是从当前位置移动-500f的位置(Y轴);
    anim 4是从-500f 位置移动到当前位置(Y轴); 
[java]  view plain copy
  1. AnimatorSet set3 = new AnimatorSet();
  2. set3.play(anim4).before(anim3) ;
  3. AnimatorSet set2 = new AnimatorSet();
  4. set2.play(anim2).before(set3) ;
  5. set.play(anim).before(set2);
  6. set.start();

这样做的目的是为了,让目标view移动一个来回,从哪里出发, 最后回到出发的位置。

2. 透明度(alpha)
主要代码
[java]  view plain copy
  1. AnimatorSet set = new AnimatorSet() ;
  2. ObjectAnimator anim = ObjectAnimator.ofFloat(phone, "alpha", 1f, 0f);
  3. anim.setDuration(2000);
  4. ObjectAnimator anim2 = ObjectAnimator.ofFloat(phone, "alpha", 0f, 1f);
  5. anim2.setDuration(2000);
  6. set.play(anim).before(anim2) ;
  7. set.start();

讲解: anim 从可见到不可见;

     anim 从不可见到可见;
 3. 旋转(rotate)
主要代码
[java]  view plain copy
  1. AnimatorSet set = new AnimatorSet() ;
  2. ObjectAnimator anim = ObjectAnimator .ofFloat(phone, "rotationX", 0f, 180f);
  3. anim.setDuration(2000);
  4. ObjectAnimator anim2 = ObjectAnimator .ofFloat(phone, "rotationX", 180f, 0f);
  5. anim2.setDuration(2000);
  6. ObjectAnimator anim3 = ObjectAnimator .ofFloat(phone, "rotationY", 0f, 180f);
  7. anim3.setDuration(2000);
  8. ObjectAnimator anim4 = ObjectAnimator .ofFloat(phone, "rotationY", 180f, 0f);
  9. anim4.setDuration(2000);
  10. set.play(anim).before(anim2);
  11. set.play(anim3).before(anim4) ;
  12. set.start();
讲解:anim 从0度转180度(X轴)
anim2从180度转0度(X轴)
anim3从0度转180度(Y轴)
anim4从180度转0度(Y轴)
[java]  view plain copy
  1. set.play(anim).before(anim2);
  2. set.play(anim3).before(anim4) ;

这样写X和Y会同时旋转

 4. 缩放 (scale)
主要代码
[java]  view plain copy
  1. AnimatorSet set = new AnimatorSet() ;
  2. ObjectAnimator anim = ObjectAnimator .ofFloat(phone, "scaleX", 1f);
  3. anim.setDuration(1000);
  4. ObjectAnimator anim2 = ObjectAnimator .ofFloat(phone, "scaleX", 0.5f);
  5. anim2.setDuration(1000);
  6. ObjectAnimator anim3 = ObjectAnimator .ofFloat(phone, "scaleY", 1f);
  7. anim3.setDuration(1000);
  8. ObjectAnimator anim4 = ObjectAnimator .ofFloat(phone, "scaleY", 0.5f);
  9. anim4.setDuration(1000);
  10. ObjectAnimator anim5 = ObjectAnimator .ofFloat(phone, "scaleX", 0.5f);
  11. anim5.setDuration(1000);
  12. ObjectAnimator anim6 = ObjectAnimator .ofFloat(phone, "scaleX",  1f);
  13. anim6.setDuration(1000);
  14. ObjectAnimator anim7 = ObjectAnimator .ofFloat(phone, "scaleY",0.5f);
  15. anim7.setDuration(1000);
  16. ObjectAnimator anim8 = ObjectAnimator .ofFloat(phone, "scaleY",  1f);
  17. anim8.setDuration(1000);
  18. AnimatorSet set3 = new AnimatorSet() ;
  19. set3.play(anim5).before(anim6);
  20. AnimatorSet set2 = new AnimatorSet() ;
  21. set2.play(anim2).before(set3) ;
  22. AnimatorSet set4 = new AnimatorSet() ;
  23. set4.play(anim7).before(anim8) ;
  24. AnimatorSet set5 = new AnimatorSet() ;
  25. set5.play(anim4).before(set4);
  26. set.play(anim).before(set2);
  27. set.play(anim3).before(set5) ;
  28. set.start();
讲解:anim 从原来大小开始(X轴)
anim2 缩放到原来的1/2(X轴)
anim3从原来大小开始(Y轴)
anim4 缩放到原来的1/2(Y轴)
anim5从原来的1/2开始放大(X轴)
anim6放大到原来的大小(X轴)
anim7从原来的1/2开始放大(Y轴)
anim8放大到原来的大小(Y轴)
代码下载地址:http://download.csdn.net/detail/luhuajcdd/5191812

『ANDROID』android animator 动画相关推荐

  1. android animator 动画

    animator 动画 动画的作用是让UI有动感, 看上去时尚. Android中动画分两种方式: 一种方式是补间动画Tween Animation,就是说你定义一个开始和结束,中间的部分由程序运算得 ...

  2. 『Android』网络请求数据与JSON解析

    『Android』网络请求数据与JSON解析

  3. Android Animator(动画)类 详解

    Android Animator动画类 详解 动画分为3种 ValueAnimator类 ObjectAnimator类 AnimatorSet类 Animator的addListener()方法(监 ...

  4. 直播App中Android酷炫礼物动画如何通过直播程序源码实现方案

    直播App中Android酷炫礼物动画如何通过直播程序源码实现方案 这个动画,如果输出成GIF的话,要3MB,尺寸是750*750.在上一篇文章中已经介绍过几种被否掉的方法,这里再稍作补充说明,如果使 ...

  5. Android开发之三种动画

    转载:http://www.cnblogs.com/angeldevil/archive/2011/12/02/2271096.html http://www.lightskystreet.com/2 ...

  6. Android自定义水波纹动画Layout

    Android自定义水波纹动画Layout 源码是双11的时候就写好了,但是我觉得当天发不太好,所以推迟了几天,没想到过了双11女友就变成了前女友,桑心.唉不说了,来看看代码吧. 展示效果 Hi前辈 ...

  7. Android:展开/折叠动画

    假设我有一个带有以下内容的垂直linearLayout: [v1] [v2] 默认情况下,v1的可见值= GONE. 我想用扩展动画显示v1并同时按下v2. 我尝试过这样的事情: Animation ...

  8. Android应用开发:动画和Fragment

    帧动画FrameAnimation 多张图片快速切换,形成动画效果 帧动画使用xml定义 frame动画是放置到res/drawable/下面,在这里定义要显示的图片和每张图片的显示时长 <an ...

  9. android落下动画,Android应用开发android 购物车小球掉落动画

    本文将带你了解Android应用开发android 购物车小球掉落动画,希望本文对大家学Android有所帮助. 先贴效果图 对自定义View小红球的绘制 public class BallView ...

最新文章

  1. SQL 2014 in-memory中的storage部分
  2. ViSP安装之Windows系统基于VS2019编译器编译获得VISP动态库
  3. MyEclipse连接oracle9i:invalid or unknown NLS parameter value specified错误
  4. AM-资产冻结与停用
  5. 获取浏览器高度_QQ浏览器违法收集用户信息,你的浏览器还安全吗?
  6. 关于.net framework 1.1 与 .net framework 2.0的小问题
  7. 并查集:P1196 [NOI2002] 银河英雄传说
  8. 重学java基础第十九课:helloWorld详解
  9. mysql 转型_MySQL的未来在哪?
  10. 编辑器未包含main类型_Shopify模版编辑器问题排查及解决办法汇总
  11. Python数据可视化-基于Python-matplotlib
  12. 关于我发的这个PDF文件的理解
  13. 计算机软件方面的基金,天天基金
  14. 基于JAVA的疫情学生宿舍管理系统【数据库设计、论文、源码、开题报告】
  15. forest_train训练文件的生成代码
  16. php只取时间的下士_闲来无聊,用python抓取天气信息,简单就是美啊
  17. [sdx62]bitbake lighttpd出现NOTE: Reconnecting to bitbake server...
  18. 2018 ucla计算机排名,2018福布斯最具价值美国大学排名:加州UCLA位列榜首!
  19. [WinError 206] 文件名或扩展名太长(组策略值修改 解除windows文件名 字符长度限制)
  20. 【北大青鸟天府校区的Java专业怎么样?】

热门文章

  1. 基于PHP的旅游资讯管理系统
  2. 视频剪辑工具,批量给视频添加上下图片
  3. 什么样的企业算是负责任的企业
  4. Jackknife,Bootstraping, bagging, boosting, AdaBoosting, Rand forest 和 gradient boosting
  5. ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to
  6. h5页面跳转到微信小程序之利用URL Scheme接口
  7. 二叉树的前序遍历-python
  8. 软考A计划-软件设计师(高级程序员)考试大纲
  9. Markdown格式文档图片设置居中
  10. chai.js中文文档