背景
原生的TextView是支持跑马灯效果的,但是在项目中实际用了之后,达不到需求,原因是内容滚动太慢,速度无法调节。因此,需要自定义一个可以调节速度的跑马灯。
思路
目前实现的思路是对文本内容不断地重绘,同时改变每次重绘的坐标,来在视觉上达到内容在滚动的效果。缺点是如果每次改变的坐标差值太大,会有明显的卡顿效果。经过调试,下面源码中的速度感觉还可以接受,如果有特殊需求,自行在调试一下。
源码(Kotlin)
class CustomMarqueeView : AppCompatTextView {
companion object {
val SPEED_FAST = 9
val SPEED_MEDIUM = 6
val SPEED_SLOW = 3
}
//View宽度
private var mViewWidth = 0
private var mViewHeight = 0
private var mScrollX = 0F
private var mMarqueeMode = 3
private val rect = Rect()
constructor(context: Context) : this(context, null