Android監(jiān)聽滑動控件實現(xiàn)狀態(tài)欄顏色切換
今天給大家分享一個平時在滑動頁面經(jīng)常遇到的效果:滑動過程動態(tài)修改狀態(tài)欄顏色。咱們廢話不多說,有圖有真相,直接上效果圖:
看到效果是不是感覺很熟悉,相對而言如果頁面頂部有背景色,而滑動到底部的時候背景色變?yōu)榘咨蛘咂渌伾臅r候,狀態(tài)欄顏色不跟隨切換顏色有可能會顯得難看至極。因此有了上圖的效果,其實就是簡單的實現(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)欄顏色。因為是在回調(diào)方法中,所以這里一旦滑動就在不停觸發(fā),所以給了一個私有屬性進(jìn)行不必要的操作,僅當(dāng)狀態(tài)改變時且滑動條件滿足時才能修改狀態(tài)欄。當(dāng)然在這個方法內(nèi)大家可以發(fā)揮自己的想象力做出更多的新花樣來。
注意:
- 滑動監(jiān)聽的這個方法只能在設(shè)備6.0及以上才能使用。
- 需要初始化滑動控件的默認(rèn)位置,xml中將焦點設(shè)置到其父容器中,防止滑動控件不再初始位置。
//初始化位置 scroll?.smoothScrollTo(0, 0) //xml中設(shè)置父view焦點 android:focusable="true" android:focusableInTouchMode="true"
到此這篇關(guān)于Android監(jiān)聽滑動控件實現(xiàn)狀態(tài)欄顏色切換的文章就介紹到這了,更多相關(guān)Android控件狀態(tài)欄顏色切換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
android?微信搶紅包工具AccessibilityService實現(xiàn)詳解
這篇文章主要為大家介紹了android?微信搶紅包工具AccessibilityService實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02Android音頻系統(tǒng)AudioTrack使用方法詳解
這篇文章主要為大家詳細(xì)介紹了Android音頻系統(tǒng)AudioTrack的使用方法,如何使用AudioTrack進(jìn)行音頻播放,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07Android TouchListener實現(xiàn)拖拽刪實例代碼
這篇文章主要介紹了Android TouchListener實現(xiàn)拖拽刪實例代碼的相關(guān)資料,需要的朋友可以參考下2017-02-02Android 自定義view實現(xiàn)TopBar效果
這篇文章主要為大家詳細(xì)介紹了Android 自定義view實現(xiàn)TopBar效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-09-09