Android System Bar的演变史与适配方案

本文详细梳理了Android System Bar从1.0到10.0的演变过程,包括不同版本的API变化、Navigation bar的引入、沉浸式模式的实现以及fitsSystemWindows属性的应用,帮助开发者理解和适配各种设备。
摘要由CSDN通过智能技术生成

一、背景

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                

            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);
    <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值