Android 属性动画看这篇就够了

前言

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

动画机制

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

944365-16a162a731f548d8.png

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 属性
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值