作者:小群群zheng | 来源:互联网 | 2023-09-07 18:51
转载地址:http:www.2cto.comkf201207138610.htmlAndroid4.0桌面底部状态栏分为两个部分:左边是三个导航键:从左置右依次是:返回键,
转载地址:http://www.2cto.com/kf/201207/138610.html
Android 4.0 桌面底部状态栏分为两个部分:左边是三个导航键:从左置右依次是:返回键 ,Home键和RecentApplication键,就是查看最近打开的所有程序,多任务切换就在这里。 这三个键为一个区域 叫NavigationArea,即导航区。 最右边是NotificationArea,也就是提示信息区,有电量,无线信号,蓝牙等信息显示。 这条StatusBar,是无论打开哪个程序都会显示在最下方的。
客户的要求需要把底部状态栏进行隐藏,通过物理按键进行操作就可以了,这些虚拟按键还有右边的状态导航都全部隐藏。我最初以为在Launcher里面实现的,看代码看了看了半个多小时居然连个返回按钮的图标都没有找到。心里想打开任意程序居然都可以显示在下方应该是系统UI把,我就试着去(frameworks/base/packages/SystemUI/res)下面的drawable理解找“返回键”图标,居然找到了,心里尽是欢喜。顺藤摸瓜最后找到图标所属的java类是TabletStatusBar.java(frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/tablet)在找到该类下的makeStatusBarView()方法就可以看到
// The navigation buttons
mBackButton = (ImageView)sb.findViewById(R.id.back);
mNavigatiOnArea= (ViewGroup) sb.findViewById(R.id.navigationArea);
mHomeButton =mNavigationArea.findViewById(R.id.home);
mMenuButton = mNavigationArea.findViewById(R.id.menu);
mRecentButton = mNavigationArea.findViewById(R.id.recent_apps);
mRecentButton.setOnClickListener(mOnClickListener);在这里就知道系统做了什么事情了。继续往上看了一下使用到了sb这个View对象原来在这里引用的。
final TabletStatusBarView sb =(TabletStatusBarView)View.inflate(context, R.layout.status_bar, null); TabletStatusBarView.java类是继承FrameLayout,在这里就可以设置它的隐藏或者显示属性了。
//-----------------------------------------------------------------------------------------------------------------------------------------
今天我在看关于怎样隐藏导航栏的问题。因为自己android基础薄弱,所以,一时之间就像无头的苍蝇,在网上乱搜。终于被我看到了上面这篇文章,一下子让我感觉有了点头绪。
private void setNavigationVisibility(int visibility) {
boolean disableHome = ((visibility & StatusBarManager.DISABLE_HOME) != 0);
boolean disableRecent = ((visibility & StatusBarManager.DISABLE_RECENT) != 0); //改动
boolean disableBack = ((visibility & StatusBarManager.DISABLE_BACK) != 0);
mBackButton.setVisibility(disableBack ? View.INVISIBLE : View.VISIBLE);
mHomeButton.setVisibility(disableHome ? View.INVISIBLE : View.VISIBLE);
mRecentButton.setVisibility(disableRecent ? View.INVISIBLE : View.VISIBLE);
mInputMethodSwitchButton.setScreenLocked(
(visibility & StatusBarManager.DISABLE_SYSTEM_INFO) != 0);
}
成功编译后,重新刷机,发现,那个查看最近应用程序的键真的消失了。