Android动力学动画之弹簧动画(SpringAnimation)

Android弹簧动画的使用与参数配置
本文介绍了Android动力学动画中的弹簧动画。首先需引入依赖库,接着可创建弹簧动画,能为其添加监听器监听不同状态。还可配置动画参数,包括起始值、最大最小值、起始速度,以及弹簧的阻尼比和强度等。

一、前言

    Android提供了动力学动画(DynamicAnimation)的支持,这类动画具有物理动力学的相关特性(而不是普通线性变化),其中弹簧动画(SpringAnimation)就是一种。顾名思义,弹簧动画就是符合弹簧收缩特性的动画。

二、使用弹簧动画

2.1 引入依赖库

    动力学动画并不在系统框架库中,使用时必须引入依赖库。

// 以下是 support 库版本
// implementation 'com.android.support:support-dynamic-animation:28.0.0'

// 以下是 androidx 版本
// Java
// implementation 'androidx.dynamicanimation:dynamicanimation:1.0.0'
// kotlin
implementation 'androidx.dynamicanimation:dynamicanimation-ktx:1.0.0-alpha03'

注意:
1. support 库和 androidx 库不能同时使用;
2.依赖库的最新版本以官方为准。

2.2 创建弹簧动画

    创建弹簧动画主要是构建 SpringAnimation 类实例,创建对象时需要指定一个添加动画的对象属性,添加动画属性的最终值和需要添加动画的对象,并可以根据需要设置各种参数和监听。

  • 可添加弹簧动画的对象属性有(在 DynamicAnimation 类中定义):

    • ALPHA:视图的透明度,取值 0 ~ 1,默认值是1(不透明),取值 0 时为不可见。
    • TRANSLATION_X:X坐标位移动画。
    • TRANSLATION_Y:Y坐标位移动画。
    • TRANSLATION_Z:Z坐标位移动画。
    • SCROLL_X: X 轴滚动动画。
    • SCROLL_Y: Y 轴滚动动画。
    • X: Z 坐标值变更动画。
    • Y: Y 坐标值变更动画。
    • Z: Z 坐标值变更动画。
  • 示例(Y轴移动动画)

findViewById<View>(R.id.imageView).apply {
   
   
    var y = 0f
    var dy: Float
    var startValue = 0f
    // 添加手势,滑动时向下移动对象,当手放开时,向上采用弹簧动画恢复到原位
    setOnTouchListener {
   
    v, event ->
        when(event.action) {
   
   
            MotionEvent.ACTION_DOWN -> {
   
   
                startValue = 0f
                y = event.rawY
            }

            MotionEvent
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值