上下跳动动画

     setChildViewLocation()
         startAnimation()  //开启动画
          /**
     * 开启抖动动画
     */
    private fun startAnimation() {
        if (isOpenAnimtion) { //动画已经开启 不执行
            return
        }
        handler2!!.sendEmptyMessage(WHAT_ADD_PROGRESS)
        isOpenAnimtion = true //开启动画
    }
        override fun onDestroy() {
        super.onDestroy()
       
        isCancelAnimtion = true//销毁动画
        //关闭handler
//        handler2?.removeCallbacksAndMessages(this)
    }
        private val handler2: Handler = Handler {
        //根据isCancelAnimtion来标识是否退出,防止界面销毁时,再一次改变UI
        if (!isCancelAnimtion) {
            setOffSet() //设置浮动动画
        }
        false
    }
    /**
     * 设置view在父控件中的位置
     */
    private fun setChildViewLocation() {
        //初始速度
        home2_beat.setTag(R.string.spd, 1.6f)
        //随机设置view动画的方向
        home2_beat.setTag(R.string.isUp, true)
        //死位置
        home2_beat.setTag(R.string.original_y, (home2_beat.y))
    }
 /**
     * view变化的y抖动范围
     */
    private val CHANGE_RANGE = 100
    private fun setOffSet() {
        //拿到上次view保存的速度
        var spd = 0f
        spd = if (home2_beat!!.getTag(R.string.spd) != null) {
            home2_beat!!.getTag(R.string.spd) as Float
        } else {
            1.1f
        }
        //初始的位置
        val original = home2_beat.getTag(R.string.original_y) as Float
        val isUp = home2_beat.getTag(R.string.isUp) as Boolean
        var translationY: Float
        //根据tag中的上下移动标识移动view
        translationY = if (isUp) {
            home2_beat.y - spd //向上
        } else {
            home2_beat.y + spd  //向下
        }
        //对位移范围的控制
        if (translationY > (CHANGE_RANGE + home2_beat.height / 2)) { //向下 移动
            translationY = original + CHANGE_RANGE + home2_beat.height / 2
            home2_beat.setTag(R.string.isUp, true)
        } else if (translationY < -CHANGE_RANGE + home2_beat.height) {
            translationY = (original - CHANGE_RANGE + home2_beat.height)
            home2_beat.setTag(R.string.isUp, false)
        }
        home2_beat.y = translationY


        handler2.sendEmptyMessageDelayed(WHAT_ADD_PROGRESS, 13)
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值