Android監(jiān)聽滑動控件實(shí)現(xiàn)狀態(tài)欄顏色切換
今天給大家分享一個平時在滑動頁面經(jīng)常遇到的效果:滑動過程動態(tài)修改狀態(tài)欄顏色。咱們廢話不多說,有圖有真相,直接上效果圖:

看到效果是不是感覺很熟悉,相對而言如果頁面頂部有背景色,而滑動到底部的時候背景色變?yōu)榘咨蛘咂渌伾臅r候,狀態(tài)欄顏色不跟隨切換顏色有可能會顯得難看至極。因此有了上圖的效果,其實(shí)就是簡單的實(shí)現(xiàn)了狀態(tài)欄顏色切換的功能,效果看起來不至于那么尷尬。
首先,我們需要分析,其中需要用到哪些東西呢?
- 沉浸式狀態(tài)欄
- 滑動組件監(jiān)聽
關(guān)于沉浸式狀態(tài)欄,這里推薦使用immersionbar,一款非常不錯的輪子。我們只需要將mannifests中主體配置為NoActionBar類型,再根據(jù)文檔配置好狀態(tài)欄顏色等屬性即可快速得到沉浸式效果:
<style name="Theme.MyApplication" parent="Theme.AppCompat.Light.NoActionBar">
//基礎(chǔ)設(shè)置
ImmersionBar.with(this)
.navigationBarColor(R.color.color_bg)
.statusBarDarkFont(true, 0.2f)
.autoStatusBarDarkModeEnable(true, 0.2f)//啟用自動根據(jù)StatusBar顏色調(diào)整深色模式與亮式
.autoNavigationBarDarkModeEnable(true, 0.2f)//啟用自動根據(jù)NavigationBar顏色調(diào)整深色式
.init()
//狀態(tài)欄view
status_bar_view?.let {
ImmersionBar.setStatusBarView(this, it)
}
//xml中狀態(tài)欄
<View
android:id="@+id/status_bar_view"
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="#b8bfff" />關(guān)于滑動監(jiān)聽,我們都知道滑動控件有個監(jiān)聽滑動的方法OnScrollChangeListener,其中返回了Y軸滑動距離的參數(shù)。那么,我們可以根據(jù)這個參數(shù)進(jìn)行對應(yīng)的條件判斷以達(dá)到動態(tài)修改狀態(tài)欄的顏色。
scroll?.setOnScrollChangeListener { _, _, scrollY, _, _ ->
if (scrollY > linTop!!.height) {
if (!isChange) {
status_bar_view?.setBackgroundColor(
Color.parseColor("#ffffff")
)
isChange = true
}
} else {
if (isChange) {
status_bar_view?.setBackgroundColor(
Color.parseColor("#b8bfff")
)
isChange = false
}
}
}這里判斷滑動距離達(dá)到紫色視圖末端時修改狀態(tài)欄顏色。因?yàn)槭窃诨卣{(diào)方法中,所以這里一旦滑動就在不停觸發(fā),所以給了一個私有屬性進(jìn)行不必要的操作,僅當(dāng)狀態(tài)改變時且滑動條件滿足時才能修改狀態(tài)欄。當(dāng)然在這個方法內(nèi)大家可以發(fā)揮自己的想象力做出更多的新花樣來。
注意:
- 滑動監(jiān)聽的這個方法只能在設(shè)備6.0及以上才能使用。
- 需要初始化滑動控件的默認(rèn)位置,xml中將焦點(diǎn)設(shè)置到其父容器中,防止滑動控件不再初始位置。
//初始化位置 scroll?.smoothScrollTo(0, 0) //xml中設(shè)置父view焦點(diǎn) android:focusable="true" android:focusableInTouchMode="true"
到此這篇關(guān)于Android監(jiān)聽滑動控件實(shí)現(xiàn)狀態(tài)欄顏色切換的文章就介紹到這了,更多相關(guān)Android控件狀態(tài)欄顏色切換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
android?微信搶紅包工具AccessibilityService實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了android?微信搶紅包工具AccessibilityService實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
Android音頻系統(tǒng)AudioTrack使用方法詳解
這篇文章主要為大家詳細(xì)介紹了Android音頻系統(tǒng)AudioTrack的使用方法,如何使用AudioTrack進(jìn)行音頻播放,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
Android TouchListener實(shí)現(xiàn)拖拽刪實(shí)例代碼
這篇文章主要介紹了Android TouchListener實(shí)現(xiàn)拖拽刪實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-02-02
Android中EditText禁止輸入表情的實(shí)例代碼
本篇文章主要介紹了Android中EditText禁止輸入表情的實(shí)例代碼,具有一定的參考價值,有興趣的可以了解一下2017-08-08
Android 自定義view實(shí)現(xiàn)TopBar效果
這篇文章主要為大家詳細(xì)介紹了Android 自定義view實(shí)現(xiàn)TopBar效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-09-09

