欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android監(jiān)聽(tīng)滑動(dòng)控件實(shí)現(xiàn)狀態(tài)欄顏色切換

 更新時(shí)間:2023年08月29日 10:45:11   作者:似曾相識(shí)2022  
這篇文章給大家分享一個(gè)平時(shí)在滑動(dòng)頁(yè)面經(jīng)常遇到的效果:滑動(dòng)過(guò)程動(dòng)態(tài)修改狀態(tài)欄顏色,文中有詳細(xì)的示例代碼,對(duì)我們的學(xué)習(xí)或工作有一定的幫助,感興趣的小伙伴自己動(dòng)手試試吧

今天給大家分享一個(gè)平時(shí)在滑動(dòng)頁(yè)面經(jīng)常遇到的效果:滑動(dòng)過(guò)程動(dòng)態(tài)修改狀態(tài)欄顏色。咱們廢話不多說(shuō),有圖有真相,直接上效果圖:

看到效果是不是感覺(jué)很熟悉,相對(duì)而言如果頁(yè)面頂部有背景色,而滑動(dòng)到底部的時(shí)候背景色變?yōu)榘咨蛘咂渌伾臅r(shí)候,狀態(tài)欄顏色不跟隨切換顏色有可能會(huì)顯得難看至極。因此有了上圖的效果,其實(shí)就是簡(jiǎn)單的實(shí)現(xiàn)了狀態(tài)欄顏色切換的功能,效果看起來(lái)不至于那么尷尬。

首先,我們需要分析,其中需要用到哪些東西呢?

  • 沉浸式狀態(tài)欄
  • 滑動(dòng)組件監(jiān)聽(tīng)

關(guān)于沉浸式狀態(tài)欄,這里推薦使用immersionbar,一款非常不錯(cuò)的輪子。我們只需要將mannifests中主體配置為NoActionBar類(lèi)型,再根據(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)//啟用自動(dòng)根據(jù)StatusBar顏色調(diào)整深色模式與亮式
      .autoNavigationBarDarkModeEnable(true, 0.2f)//啟用自動(dòng)根據(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)于滑動(dòng)監(jiān)聽(tīng),我們都知道滑動(dòng)控件有個(gè)監(jiān)聽(tīng)滑動(dòng)的方法OnScrollChangeListener,其中返回了Y軸滑動(dòng)距離的參數(shù)。那么,我們可以根據(jù)這個(gè)參數(shù)進(jìn)行對(duì)應(yīng)的條件判斷以達(dá)到動(dòng)態(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òng)距離達(dá)到紫色視圖末端時(shí)修改狀態(tài)欄顏色。因?yàn)槭窃诨卣{(diào)方法中,所以這里一旦滑動(dòng)就在不停觸發(fā),所以給了一個(gè)私有屬性進(jìn)行不必要的操作,僅當(dāng)狀態(tài)改變時(shí)且滑動(dòng)條件滿足時(shí)才能修改狀態(tài)欄。當(dāng)然在這個(gè)方法內(nèi)大家可以發(fā)揮自己的想象力做出更多的新花樣來(lái)。

注意:

  • 滑動(dòng)監(jiān)聽(tīng)的這個(gè)方法只能在設(shè)備6.0及以上才能使用。
  • 需要初始化滑動(dòng)控件的默認(rèn)位置,xml中將焦點(diǎn)設(shè)置到其父容器中,防止滑動(dòng)控件不再初始位置。
//初始化位置
scroll?.smoothScrollTo(0, 0)
//xml中設(shè)置父view焦點(diǎn)
android:focusable="true"
android:focusableInTouchMode="true"

到此這篇關(guān)于Android監(jiān)聽(tīng)滑動(dòng)控件實(shí)現(xiàn)狀態(tài)欄顏色切換的文章就介紹到這了,更多相關(guān)Android控件狀態(tài)欄顏色切換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論