Android监听滑动控件实现状态栏颜色切换

 更新时间:2023年08月29日 10:45:11   作者:似曾相识2022  
这篇文章给大家分享一个平时在滑动页面经常遇到的效果:滑动过程动态修改状态栏颜色,文中有详细的示例代码,对我们的学习或工作有一定的帮助,感兴趣的小伙伴自己动手试试吧

今天给大家分享一个平时在滑动页面经常遇到的效果:滑动过程动态修改状态栏颜色。咱们废话不多说,有图有真相,直接上效果图:

看到效果是不是感觉很熟悉,相对而言如果页面顶部有背景色,而滑动到底部的时候背景色变为白色或者其他颜色的时候,状态栏颜色不跟随切换颜色有可能会显得难看至极。因此有了上图的效果,其实就是简单的实现了状态栏颜色切换的功能,效果看起来不至于那么尴尬。

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

  • 沉浸式状态栏
  • 滑动组件监听

关于沉浸式状态栏,这里推荐使用immersionbar,一款非常不错的轮子。我们只需要将mannifests中主体配置为NoActionBar类型,再根据文档配置好状态栏颜色等属性即可快速得到沉浸式效果:

<style name="Theme.MyApplication" parent="Theme.AppCompat.Light.NoActionBar">
//基础设置
 ImmersionBar.with(this)            
      .navigationBarColor(R.color.color_bg)
      .statusBarDarkFont(true, 0.2f)
      .autoStatusBarDarkModeEnable(true, 0.2f)//启用自动根据StatusBar颜色调整深色模式与亮式
      .autoNavigationBarDarkModeEnable(true, 0.2f)//启用自动根据NavigationBar颜色调整深色式
      .init()
//状态栏view
status_bar_view?.let {
            ImmersionBar.setStatusBarView(this, it)
        } 
//xml中状态栏        
<View
   android:id="@+id/status_bar_view"
   android:layout_width="match_parent"
   android:layout_height="0dp"
   android:background="#b8bfff" />

关于滑动监听,我们都知道滑动控件有个监听滑动的方法OnScrollChangeListener,其中返回了Y轴滑动距离的参数。那么,我们可以根据这个参数进行对应的条件判断以达到动态修改状态栏的颜色。

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
        }
    }
}

这里判断滑动距离达到紫色视图末端时修改状态栏颜色。因为是在回调方法中,所以这里一旦滑动就在不停触发,所以给了一个私有属性进行不必要的操作,仅当状态改变时且滑动条件满足时才能修改状态栏。当然在这个方法内大家可以发挥自己的想象力做出更多的新花样来。

注意:

  • 滑动监听的这个方法只能在设备6.0及以上才能使用。
  • 需要初始化滑动控件的默认位置,xml中将焦点设置到其父容器中,防止滑动控件不再初始位置。
//初始化位置
scroll?.smoothScrollTo(0, 0)
//xml中设置父view焦点
android:focusable="true"
android:focusableInTouchMode="true"

到此这篇关于Android监听滑动控件实现状态栏颜色切换的文章就介绍到这了,更多相关Android控件状态栏颜色切换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Android TextView Marquee的应用实例详解

    Android TextView Marquee的应用实例详解

    这篇文章主要介绍了Android TextView Marquee的应用实例详解的相关资料,这里说明使用方法及简单实例和注意实现,需要的朋友可以参考下
    2017-08-08
  • Android编程之桌面小部件AppWidgetProvider用法示例

    Android编程之桌面小部件AppWidgetProvider用法示例

    这篇文章主要介绍了Android编程之桌面小部件AppWidgetProvider用法,结合具体实例形式分析了Android桌面组件AppWidgetProvider的功能、布局、权限设置等相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • Android实现图片浏览并改变透明度

    Android实现图片浏览并改变透明度

    这篇文章主要为大家详细介绍了Android实现图片浏览并改变透明度,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • Android简单封装一个MVP基类流程详解

    Android简单封装一个MVP基类流程详解

    MVP是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。下面这篇文章主要给大家介绍了关于Android从实现到封装MVP的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧
    2023-03-03
  • Android编写文件浏览器简单实现

    Android编写文件浏览器简单实现

    这篇文章主要为大家详细介绍了Android编写文件浏览器简单实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Android自定义View实现字母导航栏的代码

    Android自定义View实现字母导航栏的代码

    这篇文章主要介绍了Android自定义View实现字母导航栏的实例代码,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • Android使用BottomNavigationBar实现导航栏功能

    Android使用BottomNavigationBar实现导航栏功能

    这篇文章主要介绍了Android使用BottomNavigationBar实现导航栏功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-08-08
  • Android菜单的定义及ActionBar的实现

    Android菜单的定义及ActionBar的实现

    本篇文章主要介绍了Android菜单的定义及ActionBar的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • 详解Android文件存储

    详解Android文件存储

    Android存储空间包括内部存储空间(Internal Storage)和外部存储空间(External Storage),本文分别对Android内部存储空间(Internal Storage)和Android外部存储空间(External Storage)做了详细讲解
    2016-01-01
  • Android使用DatePickerDialog显示时间

    Android使用DatePickerDialog显示时间

    本文将结合实例代码,介绍Android使用DatePickerDialog显示时间,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07

最新评论