簡體   English   中英

從 Java 活動類調用自定義視圖的 Kotlin 類中的動畫

[英]Calling animation in custom view's Kotlin class from Java activity class

我有一個 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()
    }

綁定工作正常,創建時可以看到活動上的圖標。 甚至動畫也會運行,因為它記錄了組件圖像視圖的旋轉值。 但是在屏幕上,動畫沒有播放。

有什么具體原因嗎? 你有沒有遇到過這個問題?

更新:您可以在下面看到虛擬活動頁面,並且自定義視圖需要動畫旋轉。 經過一些后端檢查后,自定義視圖變為可見並旋轉動畫觸發器。

虛擬頁面

試試這個解決方案:

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()
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM