从Java活动类在自定义视图的Kotlin类中调用动画

问题描述 投票:0回答:1

我有一个Java Activity类,其中包含用Kotlin编写的自定义视图

@BindView(R.id.icon)
Icon icon;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    icon.showIcon();
}

和自定义视图类:

fun showIcon() {
    visibility = View.VISIBLE
    rotate()
}

fun rotate() {
    ValueAnimator.ofFloat(0f, 360f).apply {
        interpolator = AccelerateDecelerateInterpolator()
        startDelay = 1000
        duration = 1400
        addUpdateListener {
            val value = it.animatedValue as Float
            squatIV.rotation = value
            Timber.d(iconIV.rotation.toString())
        }
        start()
    }

绑定工作正常,创建后我可以在活动上看到该图标。甚至动画也会运行,因为它正在记录组件的“图像视图”的旋转值。但是在屏幕上,动画没有播放。

是否有特定原因?您是否遇到过此问题?

更新:在下面您可以看到虚拟活动页面,并且自定义视图需要进行动画旋转。经过一些后端检查后,自定义视图变为可见并旋转动画触发器。

dummy page

java android kotlin android-animation android-custom-view
1个回答
0
投票

尝试此解决方案:

fun rotate() {
    ValueAnimator.ofFloat(0f, 360f).apply {
        interpolator = AccelerateDecelerateInterpolator()
        startDelay = 1000
        duration = 1400
        addUpdateListener {
            val value = it.animatedValue as Float
            squatIV.rotation = value
            Timber.d(iconIV.rotation.toString())

            invalidate() // must be!
            requestLayout() // check if works without it
        }
        start()
    }
© www.soinside.com 2019 - 2024. All rights reserved.