使用 RecyclerView 滚动关联标题颜色的做法
滚动上去就从 透明->白色
private val mOnScrollListener = object : RecyclerView.OnScrollListener() {
private var tempY = 0f
private val duration = DisplayUtils.dp2px(200f)
private val evaluator = ArgbEvaluator()
private val START_COLOR = 0
private val END_COLOR = ResourcesUtils.getColor(R.color.white)
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
tempY += dy;
// 滚动的总距离相对 0 - duration 之间有一个百分比,头部的透明度也是从初始值变动到不透明,通过距离的百分比,得到透明度对应的值
// 如果小于0那么透明度为初始值,如果大于 duration 为不透明状态
val bgColor: Int = when {
tempY < 0 -> {
START_COLOR
}
tempY > duration -> {
END_COLOR
}
else -> {
evaluator.evaluate((tempY / duration), START_COLOR, END_COLOR).toString().toInt()
}
}
viewStatus?.setBackgroundColor(bgColor)
titleBar?.setBackgroundColor(bgColor)
}
}