[转]Android statusBar添加back,home,menu按钮

转载 2011年01月14日 14:51:00

[转]Android statusBar添加back,home,menu按钮


在Android界面的系统status bar上添加home,back,menu三个菜单,并完成对应的系统功能。并有higlight效果,修改status bar 高度和status bar上的文字尺寸。


这需要修改android sdk才能完成,我用的是eclair.下面就我的操作进行叙述。


1.首先完成界面显示效果。

需要修改文件./frameworks/base/services/java/com/android/server/status/StatusBarPolicy.java,


仿照mBatteryIcon等icon的添加方式添加自定义的icon,图片名称指定就好了。

另外还要记得修改./frameworks/base/core/res/res/values/arrays.xml,这里定义了icon的slot,并且决定了icon的摆放顺序。
这样,你需要的icon按键就可以显示在系统的status bar上面了。

2.判断touch event是否按动了某个icon

需要修改的文件./frameworks/base/services/java/com/android/server/status/StatusBarView.java


首先在onTouchEvent函数中,获取当前event的坐标,然后比较是否在某个按键范围之内。

由于系统对于statusBar的范围已经有了定义,所以这里只需要比较横坐标就可以了。

其次,也是这一步最关键的,怎么获取具体某一个icon的左右边界坐标呢?

系统的status bar左边显示的图标都是notification, 右边显示的是系统icon. 也就是说左边icon属于mNotificationIcons,右边的icon属于mStatusIcons. 在文件StatusBarView.java中出现的offset = getViewOffset(mStatusIcons),得到mStatusIcons的最左边的icon的left横坐标。用N = mStatusIcons.getChildCount()得到共有几个系统icon,其中包含visibility为false的icons.用mStatusIcons.getChildAt(N-i)得到的是从右边数第i个的icon view. 这个view的getLeft()+offset就是这第i个icon的左边横坐标,对应的getRight()+offset就是这第i个icon的右边横坐标。本例中home键是右边第2个icon.

3.定义icon响应事件

这里使用的方法是在StatusBarView.java中向
./frameworks/base/services/java/com/android/server/status/StatusBarPolicy.java发送一个Broadcast,让StatusBarPolicy来完成具体的事件操作。

这里需要注意的是不仅要在./frameworks/base/core/java/android/content/Intent.java中定义intent,还要在StatusBarPolicy的构造函数中添加该intent的过滤动作,即filter.addAction(Intent.ACTION_BACKICON_CHANGED).例如,按动了back键,如果当前事件为action_up,就向系统发送一个keyEvent,keyCode为KeyEvent.KEYCODE_BACK. 这里借用的是./frameworks/base/cmds/input/src/com/android/commands/input/Input.java中的sendKeyEvent函数,直接拷贝过来,按照需要稍微修改一下形参就可以了,过程不要修改。


需要说明的是,当点击statusBar可以拉出来一个notification列表,当这个列表显示出来的时候,这三个back, menu, home键的响应速度会非常慢,所以这时不响应事件并隐藏这三个键。具体做法是在StatusBarView的onTouchEvent()中判断mService.mExpanded或者 mService.mTracking为真时就不做响应。mService是StatusBarService对象。隐藏三个键也是用Broadcast来做的,但这个intent是由StatusBarServie发出来的,当mExpandedVisible = false时显示,当mExpandedVisible = true时隐藏。

这里还同时完成了highlight换图的动作,也是用Broadcast来做得,处理过程一样,就是需要区分action_down和action_up就可以了。

4.调整status bar的高度

如果你需要显示较大的屏幕尺寸,同时statusBar的高度要拉大,上面的icon的size也需要调大。为了协调一致,显示时间的字体和notification显示的日期的字体也需要调大。具体做法如下:


a. 调节status bar icon的size: 只调节status_bar.xml的textSize标签似乎不起作用,同时又修改了./base/services/java/com/android/server/status/StatusBarIcon.javat.setTextSize(32);语句才成功。不知道修改status_bar.xml的标签下的layout_height值是不是必须的,反正我是一起都给改了。

b. 调节status bar height: ./base/core/res/res/values/dimens.xml 找得我好辛苦!不知道还需不需要修改./base/core/res/res/values/themes.xml中的Window attributes的windowTitleSize值,反正我也给改了。

c. 调节notification显示日期字体的大小,修改status_bar.xml的的textSize值。
到这里,就完成了所有工作,看看效果吧。

 

Android statusBar添加back,home,menu按钮 .

在Android界面的系统status bar上添加home,back,menu三个菜单,并完成对应的系统功能。并有higlight效果,修改status bar 高度和status bar上的文字尺...
  • sir_zeng
  • sir_zeng
  • 2012年10月28日 16:24
  • 726

Android statusBar添加back,home,menu按钮

在Android界面的系统status bar上添加home,back,menu三个菜单,并完成对应的系统功能。并有higlight效果,修改status bar 高度和status bar上的文字尺...
  • shiningmm
  • shiningmm
  • 2010年04月08日 11:33
  • 12650

[转]Android statusBar添加back,home,menu按钮

[转]Android statusBar添加back,home,menu按钮 在Android界面的系统status bar上添加home,back,menu三个菜单,并完成对应的系统功能。并有hi...
  • litton_van
  • litton_van
  • 2010年08月25日 14:59
  • 425

【转】Android statusBar添加back,home,menu按钮

在Android界面的系统status bar上添加home,back,menu三个菜单,并完成对应的系统功能。并有higlight效果,修改status bar 高度和status bar上的文字尺...
  • freshui
  • freshui
  • 2010年07月01日 14:55
  • 3508

向android 的状态栏中加入快捷按钮(home,back,menu等等)的方法(续)

上一篇文章中谈到的加入快捷按钮的方法,实际上还是太过麻烦。那篇博客是在我刚接触android源代码没几天时,参考网上的介绍自己写着玩呢。实际方法很简单,在statusbar中,添加三个ImageBut...
  • freshui
  • freshui
  • 2010年11月24日 22:13
  • 7613

android 源码 在状态栏添加 虚拟按键(back,home,menu)

的版本有用,android2.3的代码和架构发生了不少变化,下面说说如何在在android2.3实现在状态栏中增加menu,home和back快捷键,本文大部分引用上面两篇文章,感谢两篇博文作者提供参...
  • yanzhi_android
  • yanzhi_android
  • 2013年08月14日 11:04
  • 1848

监听Android手机常用的三个键,home键,back键及menu键。

Android 如何监听返回键点击事件,并创建一个退出对话框, 防止自己写的应用程序不小心点击退出键而直接退出。自己记录下这个简单的demo,备用。 注:如下代码当时是从网上copy过来的,现在忘...
  • u011993697
  • u011993697
  • 2015年01月14日 22:06
  • 2233

android 修改statusbar(一)添加home back menu键

转自:   http://blog.csdn.net/dahuaishu2010_/article/details/7817733 由于完全改了status bar,建议先做几张png图片,加到 ...
  • sno_guo
  • sno_guo
  • 2014年05月15日 09:44
  • 634

Android ActionBar添加menu按钮

记录一下如何在ActionBar添加menu按钮。
  • SeanHuang1661
  • SeanHuang1661
  • 2016年03月03日 21:29
  • 3396

屏蔽掉返回键,menu键,Home键

屏蔽Back键,屏蔽Menu键,屏蔽4.0后的Home键
  • mingyue_1128
  • mingyue_1128
  • 2014年06月23日 11:18
  • 2568
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[转]Android statusBar添加back,home,menu按钮
举报原因:
原因补充:

(最多只允许输入30个字)