`
VIP庚
  • 浏览: 223316 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Android沉浸式通知栏的一个开源库SystemBarTint简单使用

 
阅读更多

  什么是沉浸式设模式?沉浸模式计就是把用来导航的各种界面操作空间隐藏在以程序内容为主的情景中,通过相对“隐形”的界面来达到把用户可视范围最大化地用到内容本身上。

  通过改变通知栏颜色来达到沉浸模式,这里简单介绍一下一个开源库SystemBarTint的使用(适用于Android系统4.4及其以上的版本)。
效果如图:




SystemBarTint链接:https://github.com/jgilfelt/SystemBarTint

在github中将其下载后,将文件夹中的library文件夹导入到studio作为Module(说实话,我弄了好久才导入成功,不同于导入.jar包那么简单)
简单介绍下导入的方法:
1 在项目根目录下建立一个libraries文件夹,移动你要使用的library project到libraries目录


2 打开settings.gradle,添加include ':libraries:你的库工程名称'


3 ctrl+alt+shift+s 打开 project structure 在左侧面板选中module,在中间面板选中module名,再在右边面板选中denpendecies

在面板的最右边出现一个加号,点击+号,选择第三项module denpendecy,将放入librarues的工程导入到项目


注意:导入后可能存在一些错误
1:library project的build.gradle里的配置的SDK版本与你现有工程的build.gradle所配置的SDK版本不一致,修改library project的build.gradle里的SDK版本,使它与现有工程一致就可以解决

2 出现了Error:No such property: GROUP for class: org.gradle.api.publication.maven.internal.ant.DefaultGroovyMavenDeployer的错误
删除library中的build.gradle中的"apply from:xxxxxxx"


言归正传将工程导入项目后在Activity 中:
public class MatchActionBarActivity extends Activity { 

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_match_actionbar);

		if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
			setTranslucentStatus(true);
		}

		SystemBarTintManager tintManager = new SystemBarTintManager(this);
		tintManager.setStatusBarTintEnabled(true);
		tintManager.setStatusBarTintResource(R.color.statusbar_bg);//通知栏所需颜色

	}

	@TargetApi(19) 
	private void setTranslucentStatus(boolean on) {
		Window win = getWindow();
		WindowManager.LayoutParams winParams = win.getAttributes();
		final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
		if (on) {
			winParams.flags |= bits;
		} else {
			winParams.flags &= ~bits;
		}
		win.setAttributes(winParams);
	}

}


这时运行,你会发现你的 view 跑到 actionbar 上面去了,很明显 google 的意图是使你的 view 可以占据整个屏幕,然后 状态栏和导航栏 透明覆盖在上面很明显这样不可行。
那有没有办法使你的 view 保持原来大小呢?
有,你需要在这个 activity 的 layout xml 文件添加两个属性
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_horizontal"
    
    android:fitsSystemWindows="true"
    android:clipToPadding="true"
    
    android:orientation="vertical" >


大功告成!
  • 大小: 9.2 KB
  • 大小: 10.3 KB
  • 大小: 1.2 KB
  • 大小: 1.1 KB
  • 大小: 5.2 KB
1
0
分享到:
评论
1 楼 Dikaros 2016-02-29  
安卓4.4以上的话使用google自带的方法就可以实现沉浸式。有没有考虑过android4.4以下时候的用法

相关推荐

    Android 沉浸式状态栏(亲测好用)

    对于Android 5.0之前的版本,可以使用第三方库如`android-translucent-status-bar`或`android.support.v7.widget.Toolbar`来实现沉浸式状态栏的效果。这些库提供了向下兼容的API,使得在低版本设备上也能实现类似的...

    Android沉浸式状态栏demo代码

    这个"Android沉浸式状态栏demo代码"应该包含了一个实例,展示了如何在Android应用中实现这种效果。 首先,要理解沉浸式状态栏的工作原理。Android 5.0(Lollipop)引入了Material Design设计语言,同时也引入了透明...

    Android沉浸式状态栏、导航栏

    AS写的沉浸式状态栏、导航栏demo,用的是开源库SystemBarTint。 blog:http://blog.csdn.net/shenyuanqing/article/details/49364921

    Android沉浸式状态栏

    1. TOOLBAR_STATUS_TYPE(工具栏类型):这种类型通常指的是将应用的顶部工具栏(ActionBar或Toolbar)与状态栏合并,使得工具栏的颜色与状态栏一致,形成一个连续的背景。这样可以使得用户感觉工具栏像是消失在了...

    Android 沉浸式状态栏 ImmersionBar

    ImmersionBar是一个轻量级库,专门用于处理Android设备上的状态栏和导航栏的沉浸式效果。下面将详细介绍这个库的使用方法以及相关知识点。 **一、什么是沉浸式状态栏** 沉浸式状态栏是指应用内容可以扩展到状态栏...

    android沉浸式状态栏 布局可以顶到状态栏上

    6. **第三方库**:为了简化开发,开发者可以使用第三方库如` android.support.design.widget.CoordinatorLayout`、`androidx.core.view.WindowInsetsController`等来轻松实现沉浸式状态栏,这些库通常提供了更好的...

    Android-GSystembartint-Android沉浸式状态栏实现

    GSystembartint库是开发者为简化Android沉浸式状态栏实现而创建的一个开源工具。它通过处理系统主题颜色、状态栏透明度和导航栏颜色,帮助开发者轻松地在应用中启用沉浸式状态栏。库的核心功能包括动态调整状态栏...

    android沉浸式任务栏Demo

    总结起来,Android沉浸式任务栏是一个强大的设计工具,能够为用户提供更加连贯和沉浸的界面。通过调整状态栏和导航栏的透明度、颜色,以及处理布局,开发者可以创造出更具吸引力的应用界面。而这个Demo就是一个实践...

    Android极简沉浸式状态栏

    在Android开发中,"沉浸式状态栏"是一个热门话题,它能够让应用的界面无缝地延伸到设备的状态栏区域,提供更为美观和一致的用户体验。本文将深入探讨Android极简沉浸式状态栏的实现方法,以及如何在不同版本的...

    Android沉浸式状态栏SystemBarTint Eclipse版本DEMO

    Android沉浸式状态栏SystemBarTint Eclipse版本DEMO,具体可见blog: http://blog.csdn.net/hwe_xc/article/details/50553758

    Android实现沉浸式通知栏-通知栏与导航栏颜色相同

    在Android开发中,沉浸式通知栏(Immersive Notification)是一种设计模式,旨在提供更为沉浸式的用户体验,使得应用内容能够无缝地延伸至设备的顶部通知栏和底部导航栏,营造出一种无边界的视觉效果。这种设计在...

    Android 沉浸式状态栏与状态栏变色

    例如,可以在values/styles.xml文件中定义一个自定义主题,使用`&lt;item name="android:windowTranslucentStatus"&gt;true&lt;/item&gt;`来使状态栏变透明。 3. 在代码中动态调整状态栏颜色,如需在Activity的onCreate()方法中...

    android 沉浸式状态栏

    在名为"ImmersiveModeDemo"的压缩包中,可能包含了一个简单的Android项目,演示了以上提到的各种技术,开发者可以通过查看源代码来学习和理解这些实现细节。通过实践和调试这个Demo,可以更好地掌握Android沉浸式...

    Android 解决沉浸式状态栏和华为虚拟按键冲突

    5. **使用第三方库**:有一些开源库如`Android-ImmersionBar`可以帮助开发者更方便地实现沉浸式状态栏和虚拟按键的适配,简化代码并提高兼容性。 6. **处理Activity的生命周期**:在Activity的`onResume()`、`...

    Android 沉浸式状态栏下输入框Demo

    3. **使用第三方库**:如`android-translucentstatusbar`或`android-immersive-fullscreen`等库可以帮助简化沉浸式状态栏的实现,并自动处理输入框与状态栏的冲突。 在DemoStatus项目中,开发者可能已经实现了以上...

    android沉浸式状态栏

    在Android开发中,"沉浸式状态栏"是一种流行的设计趋势,它使得应用的内容可以延伸到状态栏下方,提供更统一且无干扰的视觉体验。标题中的"android沉浸式状态栏"指的是在Android应用中实现状态栏与应用内容的无缝...

    沉浸式状态栏demo.rar

    对于`Demo2`这个文件,可能是实现沉浸式状态栏的一个具体示例代码,你可以导入到Android Studio中运行并学习其工作原理。 总的来说,沉浸式状态栏是提升Android应用视觉效果的一种重要手段。通过这个压缩包提供的...

    Android沉浸式状态栏工具类,一句代码轻松搞定

    标题提到的"Android沉浸式状态栏工具类"就是针对这一需求而设计的一个实用组件。这个工具类简化了实现沉浸式状态栏的操作,开发者只需一行代码就能轻松完成设置。 首先,我们来理解一下什么是沉浸式状态栏。在...

Global site tag (gtag.js) - Google Analytics