【问题标题】:Update Attributes during Rotation Animation在旋转动画期间更新属性
【发布时间】:2020-04-02 20:17:56
【问题描述】:

我正在 Kotlin 中制作旋转动画,并且在每个动画之后我想设置一个 net rotationStart 和 rotationEnd,其中 rotationStart 值最初应该设置为 = 0,然后在每次旋转后假定 rotationEnd 值的值

    val rand = Random()
    var rotStart : Float = 0f
    var rotEnd : Float = rand.nextFloat(100f)

像这样设置旋转:

    var rotateAnimation = RotateAnimation(
            rotStart, rotEnd,
            Animation.RELATIVE_TO_SELF, 0.5f,
            Animation.RELATIVE_TO_SELF, 0.5f

    )
    rotateAnimation.duration = 4000
    rotateAnimation.repeatCount = 4

与听众:

    rotateAnimation.setAnimationListener(object : Animation.AnimationListener {

        override fun onAnimationStart(animation: Animation?) {
        }

        override fun onAnimationRepeat(animation: Animation?) {
            rotStart =  rotEnd
            rotEnd = rand.nextFloat(359f)


        }

        override fun onAnimationEnd(animation: Animation?) {


        }
    })

    img_spinner.startAnimation(rotateAnimation)
}

这里的问题是,值 rotStart 和 rotEnd 在每个循环后都不会更新。是否有我忘记实现的 onUpdateListener?

【问题讨论】:

    标签: xml animation kotlin rotation android-animation


    【解决方案1】:

    嗯,到目前为止我发现的唯一方法就是这里(以防万一没有人回答这个帖子,这是我的解决方案)

        val angles = arrayOf(9,6,9,4)
    
        var rotStart = 0f
        var imageSpinner = findViewById<ImageView>(R.id.img_spinner)
    
            val ra1 = RotateAnimation(rotStart,-angles[0].toFloat() * 39, Animation.RELATIVE_TO_SELF, 0.5f,
                    Animation.RELATIVE_TO_SELF, 0.5f)
        ra1.duration = 3200
    
        val ra2 = RotateAnimation(rotStart, -angles[1].toFloat() * 39, Animation.RELATIVE_TO_SELF, 0.5f,
                Animation.RELATIVE_TO_SELF, 0.5f)
        ra2.duration = 1900
           val ra3 = RotateAnimation(rotStart, -angles[2].toFloat() * 39, Animation.RELATIVE_TO_SELF, 0.5f,
                Animation.RELATIVE_TO_SELF, 0.5f)
        ra3.duration = 5400
        val ra4 = RotateAnimation(rotStart, -angles[3].toFloat() * 39, Animation.RELATIVE_TO_SELF, 0.5f,
                Animation.RELATIVE_TO_SELF, 0.5f)
        ra4.duration = 5400
    

    在此之后,您必须在每个 onAnimationEnd 上进行设置: imageview.startAnimation(ra#NUMBER#)。 这是一种解决方法,而不是一个干净的解决方案:-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-26
      • 1970-01-01
      • 2018-05-24
      • 1970-01-01
      • 1970-01-01
      • 2017-01-27
      • 2015-08-13
      • 1970-01-01
      相关资源
      最近更新 更多