一、背景
Android System bar相关的功能与系统API在不同时期随着手机硬件与系统的发展变化较多,API的命名与组合使用经常令开发者摸不着头脑,为了理清各API出现的年代与适用范围,我们有必要按时间顺序对系统发展史做一个回顾。
二、定义
通常意义下指的是Status bar与Navigation Bar,在默认主题下,APP布局绘制内容在两个bar之间
三、API演变
1. Android 1.0~2.x时期
只有Status bar,无Navigation bar概念,导航功能由实体键实现,各家OEM厂商会提供多种实体键组合,直到Nexus One发布后,才官方规范了返回、菜单、主页、搜索四大标准实体按键。
HTC Dream/T-Mobile G1 Google Nexus One
2008 Android 1.0 2010 Android 2.1
由于此时只有Status bar,如果需要隐藏Status bar就相当于全屏展示了,Google的工程师索性就把隐藏Status bar的属性命名成了Fullscreen🐶
XML style或Java实现:
<application
...
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
...
</application>
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT < 16) {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
setContentView(R.layout.activity_main);
}
...
}
2. Android 3.0~4.3时期
Android 3.X版本为平板专用版,无手机硬件支持,但是率先引入了Navigation bar的概念。到Android 4.0时,Navigation bar正式在手机系统中出现,官方也确立了返回、主页、多任务这“三大金刚”按键作为系统交互的规范,原有的菜单实体键被弃用,onCreateOptionsMenu声明的菜单改为在Toolbar右上方显示。
2011.2 Android 3.0
Galaxy Nexus
2011.10 Android 4.0
增加了setSystemUiVisibility方法,相比WindowManager标记,新的方法可以控制的属性更多
View decorView = getWindow().getDecorView();
// Hide both the navigation bar and the status bar.
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
decorView.setSystemUiVisibility(uiOptions);
<