`
VIP庚
  • 浏览: 220772 次
  • 性别: 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以下时候的用法

相关推荐

Global site tag (gtag.js) - Google Analytics