首页 / 安卓 / 安卓 关于导航栏和状态栏你一定要知道的事
安卓 关于导航栏和状态栏你一定要知道的事
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了安卓 关于导航栏和状态栏你一定要知道的事,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6335字,纯文字阅读大概需要10分钟。
内容图文
![安卓 关于导航栏和状态栏你一定要知道的事](/upload/InfoBanner/zyjiaocheng/1018/41192be890c044deb156ed21105d690c.jpg)
今天舍友过来找我如何调整全屏 说他折腾很久却没有用 而我之前总结过 然后将文章发给他 他就按照文章中的方法解决了
以下是方法
此文章是总结网络和自己需求改动的一些方法 希望对你有所帮助
隐藏导航栏,状态栏:
一般游戏需要这种界面,代码如下:
在Activity的onWindowFocusChanged()中去设置界面完全全屏。
/**
* 导航栏,状态栏隐藏
* @param activity
*/
public static void NavigationBarStatusBar(Activity activity,boolean hasFocus){
if (hasFocus && Build.VERSION.SDK_INT >= 19) {
View decorView = activity.getWindow().getDecorView();
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
}
-------------------------------------------------------------------------------------------------
隐藏Title
在setContentView前调用
requestWindowFeature(Window.FEATURE_NO_TITLE);
-------------------------------------------------------------------------------------------------
APP全屏
这里的APP全屏又分为隐藏状态栏与ActionBar,与隐藏导航栏,状态栏。
隐藏状态栏:
/**
* 设置Activity的statusBar隐藏
* @param activity
*/
public static void statusBarHide(Activity activity){
// 代表 5.0 及以上
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
View decorView = activity.getWindow().getDecorView();
int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
decorView.setSystemUiVisibility(option);
activity.getWindow().setStatusBarColor(Color.TRANSPARENT);
ActionBar actionBar = activity.getActionBar();
actionBar.hide();
return;
}
// versionCode > 4.4 and versionCode < 5.0
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
}
-------------------------------------------------------------------------------------------------
隐藏导航栏
隐藏导航栏就是使用了UI Flag
/**
*
* @param activity
* @param
*/
public static void setNavigationBar(Activity activity,int visible){
View decorView = activity.getWindow().getDecorView();
//显示NavigationBar
if (View.GONE == visible){
int option = SYSTEM_UI_FLAG_HIDE_NAVIGATION;
decorView.setSystemUiVisibility(option);
}
}
-------------------------------------------------------------------------------------------------
沉浸式状态
方法比如android 5.0 以上的MD设计,或者修改activiyty的window的setStatusBarColor()方法,设置颜色。需要说明一点的时,沉浸式状态栏只对API19以上有效。
这里我依然采用的是设置Activity的Window设置setStatusBarColor()的方法。代码如下:
/** * 设置状态栏的颜色 */ @TargetApi(Build.VERSION_CODES.KITKAT) public static void statusBarTintColor(Activity activity, int color) { // 代表 5.0 及以上 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { activity.getWindow().setStatusBarColor(color); return; } // versionCode > 4.4 and versionCode < 5.0 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { //透明状态栏 activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); ViewGroup androidContainer = (ViewGroup) activity.findViewById(android.R.id.content); // 留出高度 setFitsSystemWindows true代表会调整布局,会把状态栏的高度留出来 View contentView = androidContainer.getChildAt(0); if (contentView != null) { contentView.setFitsSystemWindows(true); } // 在原来的位置上添加一个状态栏 View statusBarView = createStatusBarView(activity); androidContainer.addView(statusBarView, 0); statusBarView.setBackgroundColor(color); } }
/**
* 创建一个需要填充statusBarView
*/
private static View createStatusBarView(Activity activity) {
View statusBarView = new View(activity);
ViewGroup.LayoutParams statusBarParams = new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, getStatusBarHeight(activity));
statusBarView.setLayoutParams(statusBarParams);
return statusBarView;
}
/**
* 获取状态栏的高度
*/
public static int getStatusBarHeight(Context context) {
int result = 0;
int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
result = context.getResources().getDimensionPixelSize(resourceId);
}
return result;
}
----------------------------------------------------------------
获取状态栏高度
public static int getHeight(Context context) {
int statusBarHeight = 0;
try {
int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen",
"android");
if (resourceId > 0) {
statusBarHeight = context.getResources().getDimensionPixelSize(resourceId);
}
} catch (Exception e) {
e.printStackTrace();
}
return statusBarHeight;
}
---------------------------------------------------------
设置状态栏透明
public static void setTransparent(@NonNull Window window) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
window.setStatusBarColor(Color.TRANSPARENT);
}
}
public static void setTransparent(Context context) {
if (context instanceof Activity) {
setTransparent(((Activity) context).getWindow());
}
}
///--------------
自己参考网上写下的一些关于状态栏颜色的方法
public static void fixSystemUI(Activity activity){
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){//大于安卓6
activity.getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
);
activity.getWindow().setStatusBarColor(Color.TRANSPARENT);
}
}
/***
* 设置 如果不为白色 则是为黑色字
* 如果有背景 则为白色字体
* @param activity
* @param isWhite
*
*/
public static void fixSystemUI(Activity activity,boolean isWhite){
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){//大于安卓6
if(isWhite){
activity.getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
);
}else {
activity.getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|
View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
);
}
activity.getWindow().setStatusBarColor(Color.TRANSPARENT);
}
}
内容总结
以上是互联网集市为您收集整理的安卓 关于导航栏和状态栏你一定要知道的事全部内容,希望文章能够帮你解决安卓 关于导航栏和状态栏你一定要知道的事所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。