Kotlin动画不会更改元素的边界

时间:2019-01-10 13:39:51

标签: android animation kotlin

我开始学习Android版Kotlin。我正在尝试制作一个简单的动画,其中徽标缩小到其大小的0.2,然后在屏幕的左侧向上移动。

我注意到有两种方法可以做到这一点,即通过xml动画文件和通过apply()方法。

//Using the animation xml file
    val animation: Animation = AnimationUtils.loadAnimation(this@AdicionarItemActivity, R.anim.splash_logo);


    iv_splash_logo.startAnimation(animation)

    //Using the apply method
    iv_splash_logo.apply {
        alpha = 0f
        visibility = View.VISIBLE
        animate()
            .scaleX(0.2f)
            .scaleY(0.2f)
            .alpha(1f)
            .setDuration(1000)
            .setListener(object : AnimatorListenerAdapter() {
                override fun onAnimationEnd(animation: Animator?) {
                    iv_splash_logo.apply {
                        animate()
                            .setDuration(1000)
                            .translationYBy(-100f)
                            .translationX(-400f)
                            .translationY(-700f)
                    }

                }
            })
    }

动画文件代码:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:duration="2500"
     android:fillAfter="true">
    <scale
        android:fromXScale="1"
        android:fromYScale="1"
        android:toXScale="0.2"
        android:toYScale="0.2"
    />
    <translate
        android:fromXDelta="0%p"
        android:fromYDelta="0%p"
        android:toXDelta="-5%p"
        android:toYDelta="-5                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             %p"/>
</set>

问题实际上是双重的: 1)使用动画文件时,会发生动画,但是对象的物理边界仍然相同。我的意思是,如果我添加OnCLickListener,则可以单击图像以前的位置而不是动画后移动到的位置。

2)apply方法()似乎不是最佳实践,因为通过AnimatorListenerAdapter嵌套多个动画会使代码难以阅读且丑陋。但是对象的边界会随着动画而物理移动,这是我想要做的。

最后,主要目的是调整徽标的大小并将徽标从其占据​​屏幕大部分区域的中心移开,并能够单击徽标以执行某些操作。动画文件不允许我这样做,因为我可以单击图像以前的位置,并仍然调用Click方法。

哪种是制作动画的最佳方法?使用动画文件时,是否可以通过动画移动对象的边界?

0 个答案:

没有答案
相关问题