android平板有隐藏功能吗,android4.1 平板隐藏System Bar

/** * @author wilber * @target 4.1 * @requirements:4.1平板隐藏系统栏 * @theme android4.1 平板隐藏System Bar * @remark 转载请注明出处http://my.oschina.net/wilber */

有时开发视频或游戏程序,即使设置了getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE),一不小心触摸了底部区域的小黑点,看视频注意力会分散,游戏中断或注意力分散,颇感不爽。

网上搜罗了相应的资料,好像4.1有个SYSTEM_UI_FLAG_HIDE_NAVIGATION可以处理System Bar的隐藏,不管我在代码里面如何设置,就是不见效果,怀疑是手机上面的功能块吧,没得4.1的实体手机,就不具体深究。网上有些工具软件对其处理,有的需要Root权限,有的只是移动SystemUI软件包位置作消显,感觉不实用,查看View.java的源码,发现还有个标志位SYSTEM_UI_FLAG_SHOW_FULLSCREEN,实践了一会,预期的效果就出来了。

关键代码:

/**

* 设置系统栏可见性

*/

public static void setSystemBarVisible(final Activity context,boolean visible) {

int flag = context.getWindow().getDecorView().getSystemUiVisibility(); // 获取当前SystemUI显示状态

// int fullScreen = View.SYSTEM_UI_FLAG_SHOW_FULLSCREEN;

int fullScreen = 0x8; // 4.1 View.java的源码里面隐藏的常量SYSTEM_UI_FLAG_SHOW_FULLSCREEN,其实Eclipse里面也可以调用系统隐藏接口,重新提取下android.jar,这里就不述了。

if(visible) { // 显示系统栏

if((flag & fullScreen) != 0) { // flag标志位中已经拥有全屏标志SYSTEM_UI_FLAG_SHOW_FULLSCREEN

context.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); // 显示系统栏

}

} else { // 隐藏系统栏

if((flag & fullScreen) == 0) { // flag标志位中不存在全屏标志SYSTEM_UI_FLAG_SHOW_FULLSCREEN

context.getWindow().getDecorView().setSystemUiVisibility(flag | fullScreen); // 把全屏标志位加进去

}

}

}

这里多加了判断的方法,供调用

/**

* 判断状态栏是否显示

*/

public static boolean isSystemBarVisible(final Activity context) {

int flag = context.getWindow().getDecorView().getSystemUiVisibility();

// return (flag & View.SYSTEM_UI_FLAG_SHOW_FULLSCREEN) != 0;

return (flag & 0x8) == 0;

}

代码可能对3.0或4.0以上的手机版本不适用,只实测4.1平板,在4.04的小米手机上无效果

补充:最近看了下官方4.1的源码,唉,代码不一致,无效果,原来是Rockchip厂商新加入的功能,无奈,但是此功能可移植成功,抱歉。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值