沉浸式设计

使用沉浸式的设置,最多能够兼容的4.4
使用一些特殊的手段能兼容到4.4 使用的透明的状态栏

对于5.0+以上的系统来说,只要是添加了compat的依赖,也就是修改成compat的主题,那么就会实现沉浸式的效果。并且跟随着colorprimaryDark属性的颜色改变。
1)通过主题修改 使用的colorPrimaryDark的颜色
2)通过NavigationBar
需要在values-v21中进行修改使用@color/nav_color //经过测试,在魅族上并不管用,还是依照的是colorPrimaryDark
3)通过代码中进行设置
//下面应该判断版本应该超过21,经过测试这个方法是有效的

if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.LOLLIPOP){
    getWindow().setStatusBarColor(getResources().getColor(R.color.navigationbarcolor));
}

对于4.4的版本 新出的API ,能够设置状态栏为透明的。
1)在属性的样式里面设置
在api19中的样式中进行设置 并不推荐使用,因为我们只能够为19的api中进行设置,兼容性并不好。

<item name="android.windowTranslucentStatus">true</item>

//大于19  也就是4.4  并且设置小于5.0
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.KITKAT
    &&Build.VERSION.SDK_INT<Build.VERSION_CODES.LOLLIPOP){
   //这个是设置4.4版本的透明度
   getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
setContentView(R.layout.activity_main);

2)在代码中设置 设置状态栏中的透明属性

getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

//在设置的时候,要将代码放在setContentView()的前面,这样会出现一个问题,就是app的内容顶到状态栏上了,状态栏会出现遮挡。解决的方法,
解决的方法:
1)设置android:fitsSystemWindows=“true” 这个属性的作用:设置布局是否考虑当前系统窗口的布局,如果是true就是调整个系统窗口的布局(包括状态栏的view)以适应与布局
但是这样会有bug 如果在布局中有使用Scrollview和EditText的时候就会出现问题。如果是没有ScrollView的时候就不会出现bug
2)在第一步的基础上如果是有ScrollView的时候,那么就在最外层的布局中设置颜色,颜色就是沉浸的颜色,并且在ScrollView的布局中设置颜色,这样就能正常的显示.
3)也是给Toolbar设置android;fitsSystemWindows=“true”
这样能够让状态栏显示toolbar的底色,然后修改toolbar的高度,需要知道状态栏的高度是多少,我们要通过反射进行获取。

android:R.dimen.status_bar_height;
LayoutParams params=toolbar.getLayoutParams();
int statusBarHeight=getStatusBarHeight(this);
params.height+=statusBarHeight;
toolbar.setLayoutParams(params)

private int getStatusBarHeight(Context context){
      //反射去拿到数值
try{
	Class<?> clazz= Class.forName("com.android.internal.R$dimen");
	Object object=clazz.newInstance();
	String heightStr= clazz.getField("status_bar_height").get(object);
	int height=Integer.parseInt(heightStr);
	//在这这里要将dp-->px
	context.getResourse().getDimensionPixelSize(height);
 }catch(Exception e){
 }

 return 0;
}

在toolbar的高度的高度要用?attr/actionbarsize 可以考虑设置minHeight

4)修改toolbar的padding (比第三种靠谱,因为避免遮挡)
在代码中进行设置toolbar的padding

toolbar.setPaddingTop(.........)  这个是在代码中进行设置,还是比较好的,可以封装成通用的方法。  

设置底部的导航 android:navigationBarColor 这个底部导航的颜色

看看statusBarColor 这个应该是控制状态栏的颜色的

设置底部导航栏的沉浸式的设计
在4.4中做兼容的时候使用的getWindow().addFlags(WinManger.LayoutParams.FLAG_TRANSLUENT_NAVIGATION);
设置底部导航栏为透明的

第三方的沉浸解决方案:SystemTint

了解display.getRealMetrics(outMetrics),和display.getMetrics(outMetrics)的区别 通过这个方法能够判断底部的导航栏是不是出现。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值