Android2.2、2.3定制修改状态栏,包括修改布局、背景、去除状态栏按键、添加状态栏按键等,涉及到xml文件、java文件和底层库c文件以及图片等。
注意:状态栏不属于Launcher,状态栏关系到系统层即Android框架的第三层,而Launcher只是相当于一个应用程序,只涉及到最上层。
当修改好状态栏时需要全编译,但Launcher只需要小编译即可。
修改前先明白源代码架构,网上很多关于源代码目录结构的介绍,但都是很基础,我想可能是由于目录结构庞大导致无法详细说明每一个包,不过随着研究的深入,肯定会有详细介绍目录的文章,这里先引用网上的一篇介绍源代码目录结构的文章,主
要是先了解下:http://dev.10086.cn/cmdn/wiki/index.php?doc-view-5675.html
其实我很想把每个包详细的含义都作一个完整的说明,但需要一个漫长的学习过程。现在首先来学习状态栏的相关修改,这个涉及到frameworks包。这里先用2.2的布局文件来介绍,2.3的目录和这个基本上一样。
1. 状态栏的布局文件:/frameworks/base/packages/SystemUI/res/layout/status_bar.xml
在这个布局文件里修改状态栏的背景,可以把背景设置成图片或者颜色,可以把添加或者删除某个按键等;
2. 修改布局后,需要在java文件里添加这个布局,并且创建布局中每个视图的对象,涉及到的java文件是:
/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarView.java
在此文件中,需要声明视图对象,添加、删除监听事件、以及触发事件后的处理方法等。
3. 要修改状态栏的高度,需要在/frameworks/base/core/res/res/values/dimens.xml文件中修改。
4. 如果添加或者删除了某个按键,系统需要获取这个按键的按键值,涉及到按键值的四个文件是:
XML文件: /frameworks/base/api/current.xml
java文件: /frameworks/base/core/java/android/view/KeyEvent.java
xml文件: /frameworks/base/core/res/res/values/attrs.xml
c文件: /frameworks/base/include/ui/KeycodeLabels.h
注意技巧,里面很多的键值都是固定的,所以可以参看他们的方法增加新键的键值。
在上面几个文件中只要添加或者删除某个按键对应的按键值就可以了。
5. 状态栏涉及到资源图片文件主要在:/frameworks/base/core/res/res/
6. 状态栏可以下拉,那么这个下拉界面主要在:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarService.java
举例1:假如我们想把状态栏背景变成透明的,那需要在两个地方修改:
a) 打开:/frameworks/base/packages/SystemUI/res/layout/status_bar.xml
将第24行的背景改成:
android:background="#7f000000"
即表示背景透明了。
b) 上面XML布局里修改也只能在默认情况下显示透明,但这只是静态修改,还需要在java代码里修改使得动态情况下也变成透明的。
打开:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarService.java
找到:
protected void addStatusBarView()
将该方法中得代码:
PixelFormat.RGBX_8888 改成 PixelFormat.TRANSLUCENT
PixelFormat.TRANSLUCENT即表示透明。
举例2:我们也可以把下拉界面全屏显示
找到方法:void updateExpandedViewPos(int expandedPosition)
有一段代码:
mTrackingPosition = mTrackingParams.y = pos; //原来是的坐标
mTrackingParams.height = disph-h; //原来的高度
h表示状态栏的高度,默认情况下不是全屏的,是占据了大半个屏幕。如果要全屏,至少要吧下拉界面的宽度加上一个h,同时把下拉界面向上移动一个h,所以可以改成:
mTrackingPosition =pos;
mTrackingParams.y = pos-h; //原来的坐标是pos,现在要把下了界面向上移动,那就必须要减去h(注意坐标的方向,详细请参看下面的平面坐标图,请注意和数学里面的几何坐标不一样)
mTrackingParams.height = disph; // 表明高度等于屏幕的高度
7. 状态栏里面有一个时钟,它的主要代码在:
/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/Clock.java
上面只是简单介绍了要修改状态栏所涉及到的主要文件所在的位置,具体修改可以根据客户需求或者产品需求来作。
分享到:
相关推荐
### 搭建MyEclipse 8.5 下 Android 2.2-2.3 开发环境 #### 基本步骤概览 1. **安装MyEclipse 8.5**(集成了Eclipse 3.5.2) 2. **安装和配置Android SDK 2.2** 3. **安装ADT(Android Development Tools)插件** 4...
适合早期android 运存低手机使用,在2.1 2.2 2.3 以及4.0 4.1系统有极好体验
### Android2.3状态栏透明修改教程 #### 知识点一:状态栏透明修改方法 **背景介绍:** 在Android开发中,有时为了达到更好的视觉效果或满足特定设计需求,开发者需要对系统的状态栏进行定制化修改。本文将详细...
在Android开发中,沉浸式状态栏(Immersive Status Bar)是一种设计趋势,它使得应用内容可以延伸到手机屏幕的状态栏区域,提供更沉浸式的用户体验。这种效果常见于全屏游戏或视频播放等应用场景,目的是减少界面...
本教程将详细讲解如何修改状态栏的背景颜色、字体颜色,如何隐藏状态栏以及如何实现状态栏透明。 1. **修改状态栏背景颜色** 在Android 5.0(API Level 21)及以上版本,我们可以使用`setStatusBarColor()`方法来...
在Android平台上,Camera API是开发人员用来实现相机功能的核心接口,尤其在Android 2.2 (Froyo) 和 2.3 (Gingerbread) 版本中,这一接口对于构建拍照应用至关重要。本文将深入探讨这两个版本的相机源代码,帮助...
在布局XML文件中,可以通过`android:fitsSystemWindows="true"`属性来自动适应状态栏高度,但需要注意,此属性在某些设备上可能无法处理虚拟按键。 3. **动态设置状态栏透明**:使用`WindowCompat`的`setFlags()`...
本文将详细讲解如何在Android中实现沉浸状态栏和顶部状态栏背景色的设置。 首先,我们需要理解Android的状态栏。状态栏位于屏幕顶部,显示系统时间和各种通知图标,通常有一条背景色或透明。在Android 5.0...
在Android 5.0(Lollipop)之前,状态栏通常是不可定制的,但在之后的版本中,Google引入了`透明状态栏`和`导航栏`的概念,允许开发者自定义这部分的外观。 在Android的样式(style)文件中,可以通过设置以下属性...
本文将深入探讨如何在Android 4.4(KitKat)及更高版本上实现沉浸式状态栏、变色状态栏、透明状态栏以及如何修改状态栏的颜色和透明度。 1. **Android沉浸式状态栏** Android沉浸式模式主要通过`SYSTEM_UI_FLAG_...
在Android开发中,沉浸式状态栏(Immersive Status Bar)是一种常见的设计手法,它能够使应用的内容无缝地延伸到状态栏下方,提供更全面、更沉浸的用户体验。这种技术尤其在游戏和全屏应用中非常受欢迎,因为它最大...
总之,通过`AndroidStatusBar.cs`和`AppStatusBar.cs`,开发者可以在Unity中实现对Android状态栏的定制,包括显示、隐藏、透明度和颜色等效果。这不仅提升了用户体验,也展示了Unity与Android原生系统深度集成的可能...
这份文档集合包含了Android 2.2(API级别8)及部分2.3(API级别9)的详细中文翻译,旨在帮助开发者理解和使用Android平台的各种功能和接口。 首先,Android API文档是开发者进行程序设计的重要参考资料,它详细地...
首先,让我们理解Android 2.2的背景。Froyo是Android 2.x系列的一个重要更新,引入了多项性能优化和新特性,如更快的JavaScript执行速度、支持USB tethering和Wi-Fi热点等。对于开发者来说,Froyo提供了更多的API...
在Android开发中,为了让应用的用户体验更加统一和美观,有时我们需要自定义状态栏的颜色,使其与应用的标题栏颜色保持一致。在iOS系统中,这种效果很常见,但早期的Android版本并不支持这一特性。不过,从Android ...
本篇将详细讲解如何在Android状态栏添加和移除图标。 首先,我们需要了解Android的通知系统。Android的通知主要通过`Notification`类来创建,并通过`NotificationManager`来管理和展示。`Notification`类包含了通知...
标题提到的"Android 2.2下能用的SwitchButton"是指在Android 2.2(API级别8)这个较旧的版本上,开发者通常无法直接使用原生的Switch控件,因为Switch是在Android 4.0(API级别14)及以上版本引入的。描述中提到的...
3. 修改与定制:开发者可以根据需求修改源码,实现自定义功能,如优化性能、添加新特性或修复bug。 4. 创建ROM:对于发烧友和开发者,可以基于源码制作个性化的第三方ROM,如CyanogenMod。 六、附带的“使用方法....