羊皮书APP(Android版)开发系列(七)Android沉浸通知栏

来源:互联网 发布:阳西县网络问政首页 编辑:程序博客网 时间:2024/05/16 13:05
  • Android沉浸通知栏,有一个开源库SystemBarTint,效果如下:
    这里写图片描述
  • 使用方法:在Activity中添加相关代码,Demo如下:
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);      }  }  
  • 在APP中使用的时候,我们不要在每个Activity中都重复写这么一段代码,而是要自己定义一个基础的抽象Activity类,用于其他Activity继承,减少代码重复。这里给出我定义的一个基础抽象Activity类BaseActivity.java,代码如下:
package cn.studyou.parchment.activity;import android.annotation.TargetApi;import android.os.Build;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.Window;import android.view.WindowManager;import com.readystatesoftware.systembartint.SystemBarTintManager;import cn.studyou.parchment.R;/** * 基本功能:基础Activity类 * 创建:王杰 * 创建时间:16/3/9 * 邮箱:w489657152@gmail.com */public abstract class BaseActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {            setTranslucentStatus(true);        }        SystemBarTintManager tintManager = new SystemBarTintManager(this);        tintManager.setStatusBarTintEnabled(true);        tintManager.setStatusBarTintResource(R.color.green);//通知栏所需颜色    }    @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);    }}
  • 然后每个Activity中继承BaseActivity即可,如下:
package cn.studyou.parchment.activity;import android.os.Bundle;import cn.studyou.parchment.R;public class MainActivity extends BaseActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }}
  • 最后一步,要在布局文件中添加如下代码:
android:clipToPadding="false"
  • 添加后的布局文件代码形式如下:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@color/green"    android:fitsSystemWindows="true"    android:clipToPadding="false"    >    <Button        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="登录"        android:textSize="@dimen/normal"/></RelativeLayout>

  • 原文地址:http://blog.csdn.net/wjwj1203/article/details/50867856
  • 我的github地址:https://github.com/wjie2014
  • 我的博客地址:http://blog.studyou.cn/
  • 我的CSDN博客地址:http://blog.csdn.net/wjwj1203
  • 我的Gmail邮箱:w489657152@gmail.com

0 0