主要用:HorizontalScrollView 实现,然后里面放一个LinearLayout 就可以。
为什么用HorizontalScrollView ,如果用其它View窗口。LinearLayout 显示区以外的可能不显示
再使用动画类实现移动跟循环。喜欢封装的可以自己继续然后再用循环做

    for (item in logs) {
        createItem(item)
    }
    createItem(logs[0])

    MainScope().launch(Dispatchers.Main) {
        delay(100)
        loop2()
    }
}

private fun loop2(){
    val width = xxxLine.measuredWidth

    // 第一个多创一下。用于做动画
    var w1 = xxxLine[0].measuredWidth
    val w2 = xxxLine.measuredWidth
    var dx = width - w1 + (w2 - w1).coerceAtMost(0)

    val anim = ObjectAnimator.ofFloat(xxxLine, "translationX", 0.0f, -dx.toFloat())
    anim.duration = width * 10L
    anim.interpolator = LinearInterpolator() // 匀速
    anim.repeatCount = ValueAnimator.INFINITE // 循环
    anim.start()
}

禁掉HorizontalScrollView 的事件和android:scrollbarSize="0dp"就可能完美显示

hsXXX.setOnTouchListener { _, _ -> return@setOnTouchListener true }

标签: none

评论已关闭