效果圖

仿簡書個人主頁.gif
整體布局
FrameLayout+CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout+TabLayout+ViewPager

整體布局.png
關鍵代碼
監(jiān)聽AppBarLayout滑動事件,StatusBar和Toolbar顏色隨著其滑動而不斷改變。
app_bar.addOnOffsetChangedListener(AppBarLayout.OnOffsetChangedListener { appBarLayout, verticalOffset ->
val ratio = Math.abs(verticalOffset) * 1.0f / appBarLayout.totalScrollRange
view_status_height.setBackgroundColor(ColorUtils.blendARGB(Color.TRANSPARENT, Color.WHITE, ratio))
view_toolbar_bg.setBackgroundColor(ColorUtils.blendARGB(Color.TRANSPARENT, Color.WHITE, ratio))
iv_toolbar_back.isSelected = ratio >= 0.5
iv_toolbar_nav.isSelected=ratio >= 0.5
iv_toolbar_search.isSelected = ratio >= 0.5
toolbar_title.visibility = if (ratio >= 0.5) View.VISIBLE else View.INVISIBLE
ImmersionBar.with(this@JSUserInfoActivity).statusBarDarkFont(ratio >= 0.5).init()
})