2019独角兽企业重金招聘Python工程师标准>>>

官网参考

参考二

Android动画分为两大块:

  • Property Animation(属性动画)

  • View Animation(视图动画)

    此类又分为Tween animation和Frame animation

Property Animation 和 View Animation的区别

View Animation 主要作用于View这类的对象;只能修改View的scale,rotation等,并不包括背景色,位置的实际信息; 比如,使用View Animation做一个Button的移动,在移动的过程中,按钮实际的点击位置是在开始位置,而不会随着按钮移动或者压缩而改变;

Property Animation就能够实质的改变上面说有的情况(包括不是View类的对象),说白了, View Animation只是感官View在变化了,其实是没有本质的变化

API 层面

主要分为三类:Animator, Evalutor, Interpolater;

Animator: 创建动画的基础和框架,是个接口,有ObjectAnimator和ValueAnimator的实现,主要计算property的值和把值传给具体的object的property

Evalutor: 根据Animator, 提供的值的范围和时间,来计算Property的值

Interpolater: 主要用于计算单位时间内值的改变量, 有点像加速度的概念; 加速度的概念是单位时间内速度的变化量

###Property Animation(属性动画)

####主要元素或者类:

elapsed fraction:时间因子(主要用于计算时间的值变化)

interpolated fraction:内插值因子(主要用于计算property的值变化量,主要来自TimeInterpolator的传递)

VauleAnimator:主要的类,监控动画的时间,属性的值

TimeInterpolator: 插入器(窜改者)使用时间因子计算出值的变化量

TypeEvaluator: 使用内插值因子计算property的值

xml方式,使用animator.setTarget() 和 animator.start()

AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(myContext,
R.anim.property_animator);
set.setTarget(myObject);
set.start();

在View Animation中使用view.startAnimation ObjectAnimator是VauleAnimator的子类;

参考 来至android api simple下的AnimationCloning.java一段代码:

  private void createAnimation() {if (animation == null) {// 创建动画, 提供属性 “y” 的值的范围ObjectAnimator anim1 = ObjectAnimator.ofFloat(balls.get(0), "y",0f, getHeight() - balls.get(0).getHeight()).setDuration(500);ObjectAnimator anim2 = anim1.clone();anim2.setTarget(balls.get(1));// 动画的值在改变的时候, 就会执行onAnimationUpdate方法anim1.addUpdateListener(this);ShapeHolder ball2 = balls.get(2);ObjectAnimator animDown = ObjectAnimator.ofFloat(ball2, "y",0f, getHeight() - ball2.getHeight()).setDuration(500);// 设置属性值的单位时间内改变值的类animDown.setInterpolator(new AccelerateInterpolator());ObjectAnimator animUp = ObjectAnimator.ofFloat(ball2, "y",getHeight() - ball2.getHeight(), 0f).setDuration(500);animUp.setInterpolator(new DecelerateInterpolator());// 集合动画AnimatorSet s1 = new AnimatorSet();s1.playSequentially(animDown, animUp);animDown.addUpdateListener(this);animUp.addUpdateListener(this);AnimatorSet s2 = (AnimatorSet) s1.clone();s2.setTarget(balls.get(3));animation = new AnimatorSet();// 启动动画的方式: 一起来animation.playTogether(anim1, anim2, s1);// 启动动画的方式: 有序启动,一个一个来animation.playSequentially(s1, s2);}......public void onAnimationUpdate(ValueAnimator animation) {// 刷新UI invalidate();}

####其他知识点

  • 动画有集合,可以一起执行,顺序执行,还有相互影响执行,比如谁先随后执行
  • 动画的开始,结束,重复,取消,更新都可以被监听
  • GroupView 布局动画受LayoutTransition控制,比如子view的显示和消失, 比如view添加和删除等
  • 自定TypeEvalutor, 因为有时候是需要改变Object的property不一定是int, float, 这些基本类型,也有可能是String类型;
  • Keyframe: 有点像帧动画,具体时间,具体值配对(有点像key是时间的map);结合PropertyValuesHolder.ofKeyframe使用

###View Animation(视图动画)

  • xml方式,使用startAnimation

      ImageView spaceshipImage = (ImageView)findViewById(R.id.spaceshipImage);Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);spaceshipImage.startAnimation(hyperspaceJumpAnimation);
    

转载于:https://my.oschina.net/jiemachina/blog/187449

Android 动画简单理解相关推荐

  1. android ipc简单理解,Android IPC 机制【1】--简介

    一.android 中进程间通信常用的有以下几种机制 ------------------------------------------------------------------------- ...

  2. android:exported简单理解

    最近在看微信分享.收藏和发送到朋友圈的官方文档,发现其中有一个android:exported的属性,当在向微信发送了请求后需要接受请求的返回值时,须在androidManifest设置该属性为tru ...

  3. Anima2D动画简单理解

    参考文章:http://blog.csdn.net/q568360447/article/details/72574496 Anima2D是Unity 5.x中完成度最高的2D骨骼动画解决方案,使用该 ...

  4. android动画的实现原理,Android动画的实现原理 .

    1.动画运行模式 独行模式 中断模式 2.Animation类 每个动画都重载了父类的applyTransformation方法这个方法的主要作用是把一些属性组装成一个Transformation类, ...

  5. Android动画系列 - PropertyAnim 详解

    前言: 上一篇文章传统View动画与Property动画基础及比较简单对Android动画系统的基础做了介绍,本篇文章将对PropertyAnimation进行全面深入的探讨,本篇文章可以分为两大块, ...

  6. Android:安卓学习笔记之共享元素的简单理解和使用

    Android 共享元素的简单理解和使用 1 .基本概念 2.基本使用 1.Activity to Activity跳转实现 1.1.使用步骤 1.2.案例说明 2.Fragment to Fragm ...

  7. Android:安卓学习笔记之navigation的简单理解和使用

    Android navigation的简单理解和使用 1 .基本概念 1.1.背景 1.2.含义 2.组成 2.1.Navigation graph 2.2.NavHostFragment 2.3.N ...

  8. Android:安卓学习笔记之MVP模式的简单理解和使用

    Android MVP模式的简单理解和使用 MVP模式 1. 为什么使用MVP模式? 1.1.实例说明 2.一步步让你理解MVP 2.1.MVP实现第一步, 将页面拆分为M/V/P三个模块 2.2. ...

  9. android 点击事件消费,Android View事件分发和消费源码简单理解

    Android View事件分发和消费源码简单理解 前言: 开发过程中觉得View事件这块是特别烧脑的,看了好久,才自认为看明白.中间上网查了下singwhatiwanna粉丝的读书笔记,有种茅塞顿开 ...

最新文章

  1. Simulink中DPCM量化和编码仿真
  2. 每一个工程师都要学的安全测试,老板再也不用担心服务器被黑
  3. 【Android】页面栈
  4. 解决点击事件让背景变红,在点击背景变正常,并且可以多选的效果
  5. 【PAT乙】1005 继续(3n+1)猜想 (25分)
  6. Gstreamer官方教程汇总2---GStreamer concepts
  7. android activity详解三:保存activity的状态
  8. 植物大战僵尸的java源代码_植物大战僵尸java源码
  9. 英文文本分类(CNN)
  10. 为什么要从 Microsoft Store 下载 Visual Studio/VS Code?
  11. 由偷菜/抢车位引发的思考
  12. Lync Server 2013 标准版的DNS和端口要求
  13. 数组数据通过sql语句转为数据库表衔接到from或join后进行直接或关联查询
  14. 学生信息管理系统python
  15. 微信营销的价值及注意
  16. Array 属性和方法
  17. 2017届南京富士通南大软件校招软件工程师面经
  18. matlab中提示m文件不在current folder下(实际上在)
  19. 量子计算机和超导,量子计算的未来在哪里——超导电路与光子学
  20. 【计算机体系结构 / 并行与分布计算 / 存储系统】 2019年-中国计算机学会推荐国际学术会议和期刊目录(一)

热门文章

  1. 关于pdfobject.js在不同浏览器显示问题
  2. 三台服务器同时服务一个网站,三台服务器同时热备
  3. Android集成Unity
  4. 基于 Python 的自然邻域法空间插值的实现与思考
  5. PRML《模式识别与机器学习》的Python3代码实现
  6. 【问】软件安装,数据库失败,错误:(15007)‘HB’是无效登陆名或您没有相应的权限
  7. ubuntu18.04 全局美化-------最全
  8. 坯子库插件安装完以后搜不到里面的插件_SketchUp坯子库管理器
  9. 企业服务业务系统-业务模型梳理(中)
  10. 金蝶条码标签打印,无条码的商品如何进行仓库条码管理。