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

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

通过改变通知栏颜色来达到沉浸模式,这里简单介绍一下一个开源库SystemBarTint的使用(适用于Android系统4.4及其以上的版本)。
效果如图:
[img]http://dl2.iteye.com/upload/attachment/0115/2148/ec911de0-3639-3091-86d6-730404d778d6.png[/img]

[img]http://dl2.iteye.com/upload/attachment/0115/2150/0f3bfe36-1acf-30dc-a2a1-c0f6eccbebd5.png[/img]

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

在github中将其下载后,将文件夹中的library文件夹导入到studio作为Module(说实话,我弄了好久才导入成功,不同于导入.jar包那么简单)
简单介绍下导入的方法:
1 在项目根目录下建立一个libraries文件夹,移动你要使用的library project到libraries目录
[img]http://dl2.iteye.com/upload/attachment/0115/2152/fcb3202a-14fe-3a3c-a1aa-11368236187c.png[/img]

2 打开settings.gradle,添加include ':libraries:你的库工程名称'
[img]http://dl2.iteye.com/upload/attachment/0115/2156/3e38e9fe-7aa4-3715-89bd-68e86519e592.png[/img]

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

在面板的最右边出现一个加号,点击+号,选择第三项module denpendecy,将放入librarues的工程导入到项目
[img]http://dl2.iteye.com/upload/attachment/0115/2158/40ec41c1-cb30-3206-a7af-ca82fa52b754.png[/img]

注意:导入后可能存在一些错误
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" >


大功告成!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值