前言

  • 动画绘制与 View 绘制有哪些区别?
  • Android 动画框架是什么?适应场景有哪些?

动画机制

Android 内部有一套动画框架,开发者通过调用 Api 能够快速实现华丽丽的动画效果。

动画和 View 有着密切联系,其中动画的重绘在 ViewGroup.drawChild 中实现,听说刷新间隔10ms。

视图动画

View(视图)动画的作用对象是 View,有四种效果:平移动画,缩放动画,透明度动画,旋转动画。

名称 标签 子类 效果
平移动画 TranslateAnimation 移动 View
缩放动画 ScaleAnimation 放大或缩小 View
透明度动画 AlphaAnimation 改变 View 的透明度
旋转动画 RotateAnimation 旋转 View

Interpolater

插值器:影响动画的播放速度,比如非匀速动画需要插值器来控制播放流程。

属性动画

API 11 以后新加入了属性动画,使用属性动画移动的 View 是真正移动到了相应的位置,也就是说具有可交互性。

属性动画从 API 11 才有,但是 J神推出了兼容版本 Nineoldandroids 对Android3.0 以前的版本进行兼容,目前这些版本早已经退出市场,所以兼容性已经不是问题。

流程图

图片来自 https://blog.csdn.net/carson_ho/article/details/72909894

ValueAnimator 的示例代码,将宽度为 100dp 的 button,改为 500dp,设置动画时间 3s。

    // 步骤1:设置动画的初始值和结束值        ValueAnimator valueAnimator = ValueAnimator.ofInt(button.getLayoutParams().width,500);        // 步骤2:设置播放时间        valueAnimator.setDuration(3000);        // 步骤3:绑定监听器        valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {            @Override            public void onAnimationUpdate(ValueAnimator animator) {                int currentValue = (Integer) animator.getAnimatedValue();                // 获得每次变化后的属性值                System.out.println(currentValue);                // 输出每次变化后的属性值进行查看                button.getLayoutParams().width = currentValue;                // 每次值变化时,将值手动赋值给对象的属性                // 即将每次变化后的值 赋 给按钮的宽度,这样就实现了按钮宽度属性的动态变化                // 步骤4:刷新视图,即重新绘制,从而实现动画效果                button.requestLayout();            }        });         // 启动动画        valueAnimator.start();

插值器和估值器

之前的 Button 的变化动画中,并未使用插值器和估值算法,因为它是匀速动画,这两个工具是实现非匀速动画的重要手段。

插值器 作用 估值算法 作用
线性插值器 匀速动画 IntEvaluator 针对整型属性
加速减速插值器 两头慢中间快 FloatEvaluator 针对浮点型
减速插值器 动画越来越慢 ArgbEvaluator 针对 Color 属性

更多相关文章

  1. Android(安卓)抽象布局include merge Viewstub
  2. Android仿“知乎”隐藏标题栏、回答详情页动画效果
  3. Android(安卓)点击 APP 图标几秒才显示界面
  4. Android(安卓)小项目之--数据存储【Files】(附源码)
  5. 【Android】界面布局之 LinearLayout(线性布局)
  6. Android中ImageView的scaleType 属性说明。
  7. Android事件拦截处理机制理解:
  8. Android逆向破解之Mointor查看目标日志
  9. Android(安卓)ScrollView嵌套WebView出现大面积空白页解决方法

随机推荐

  1. 深入Android系统 Binder-3-原理
  2. 2017安卓最全框架
  3. 【android】发布应用到各大市场
  4. Android系统中prop详解
  5. android内部外部存储卡路径的获取
  6. .Android(安卓)Notification 基础
  7. Android Touch事件传递机制
  8. android jni 输出log
  9. Android之使用picker打开相应的app
  10. Android Web Server