很简单重点是 recyclerview 的滑动监听
var lm = LinearLayoutManager(act)
recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrollStateChanged(@NonNull recyclerView: RecyclerView, newState: Int) {
super.onScrollStateChanged(recyclerView, newState)
}
override fun onScrolled(@NonNull recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
if (lm!!.findFirstVisibleItemPosition() === 0) {
mDistanceY = -rv_d.getChildAt(0).getTop().toFloat()
//完全变色的高度
val changeHeight: Int = 1000
//当滑动的距离 <= toolbar高度的时候,改变Toolbar背景色的透明度,达到渐变的效果
if (mDistanceY <= changeHeight) {
val alpha = mDistanceY / changeHeight
layout_title.setAlpha(alpha)
if (alpha < 0.2) {
iv_back.setImageResource(R.mipmap.navnar_icon_back_w)
iv_more.setImageResource(R.mipmap.grzx_icon_more)
} else {
iv_back.setImageResource(R.mipmap.navnar_icon_back_b)
iv_more.setImageResource(R.mipmap.grzx_icon_more_b)
}
} else {
layout_title.setAlpha(1f)
layout_title.setEnabled(true)
iv_back.setImageResource(R.mipmap.navnar_icon_back_b)
iv_more.setImageResource(R.mipmap.grzx_icon_more_b)
}
} else {
if (layout_title.getAlpha() !== 1f) {
layout_title.setAlpha(1f)
layout_title.setEnabled(true)
iv_back.setImageResource(R.mipmap.navnar_icon_back_b)
iv_more.setImageResource(R.mipmap.grzx_icon_more_b)
}
}
}
})
更多开发中的小细节请点击。