沉浸式状态栏和6.0权限申请框架

安卓6.0以后很多权限需要手动确认开启权限,虽然自己写起来也是很快

但是这里推荐一个框架及可以更加迅速的开启权限

1.gradle一句话引用

compile 'com.yanzhenjie:permission:1.0.5'
2.申请权限

AndPermission.with(this)
    .requestCode(100)
    .permission(Manifest.permission.WRITE_CONTACT)
    .send();
可在permission里面添加多个权限并且任然需要在AndroidManifest.xml添加权限
3.回调方法
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    // 只需要调用这一句,第一个参数是当前Acitivity/Fragment,回调方法写在当前Activity/Framgent。
    AndPermission.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
}

// 成功回调的方法,用注解即可,里面的数字是请求时的requestCode。
@PermissionYes(100)
private void getLocationYes(List<String> grantedPermissions) {
    // TODO 申请权限成功。
}

// 失败回调的方法,用注解即可,里面的数字是请求时的requestCode。
@PermissionNo(100)
private void getLocationNo(List<String> deniedPermissions) {
    // 用户否勾选了不再提示并且拒绝了权限,那么提示用户到设置中授权。
    if (AndPermission.hasAlwaysDeniedPermission(this, deniedPermissions)) {
        // 第一种:用默认的提示语。
       AndPermission.defaultSettingDialog(this, REQUEST_CODE_SETTING).show();
    }
}
可直接去github查看
https://github.com/yanzhenjie/AndPermission
关于沉浸式状态栏(一般写在你的baseactivity中

   
   
 //控制状态栏颜色
 compile 'com.readystatesoftware.systembartint:systembartint:1.0.3'
   private SystemBarTintManager tintManager;
    /**
     * 初始化沉浸式
     */
    private void initStateBar() {
        setColorId();
        if (isNeedLoadStatusBar()) {
            loadStateBar();
        }
    }
 
    private void loadStateBar() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            setTranslucentStatus(true);
        }
        tintManager = new SystemBarTintManager(this);
        // 激活状态栏设置
        tintManager.setStatusBarTintEnabled(true);
        // 激活导航栏设置
        tintManager.setNavigationBarTintEnabled(true);
        // 设置一个状态栏颜色
        tintManager.setStatusBarTintResource(getColorId());
    }
    @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);
    }
 
    /**
     * 如果子类使用非默认的StatusBar,就重写此方法,传入布局的id
     */
 
    protected int  mColorId=R.color.color9;
    protected void setColorId() {
        this.mColorId=R.color.color9;//子类重写方式
    }
 
    protected int getColorId() {
        return mColorId;
    }




 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值