Android statusBar添加back,home,menu按钮

原创 2012年03月23日 17:44:21
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,仿照mBatteryIconicon的添加方式添加自定义的icon,图片名称指定就好了。另外还要记得修改./frameworks/base/core/res/res/values/arrays.xml,这里定义了iconslot,并且决定了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的最左边的iconleft横坐标。用N = mStatusIcons.getChildCount()得到共有几个系统icon,其中包含visibilityfalseicons.mStatusIcons.getChildAt(N-i)得到的是从右边数第i个的icon view. 这个viewgetLeft()+offset就是这第iicon的左边横坐标,对应的getRight()+offset就是这第iicon的右边横坐标。本例中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,就向系统发送一个keyEventkeyCodeKeyEvent.KEYCODE_BACK. 这里借用的是./frameworks/base/cmds/input/src/com/android/commands/input/Input.java中的sendKeyEvent函数,直接拷贝过来,按照需要稍微修改一下形参就可以了,过程不要修改。

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

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

 

4.调整status bar的高度

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

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

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

  c.调节notification显示日期字体的大小,修改status_bar.xml<com.android.server.status.DateView>textSize值。   

  到这里,就完成了所有工作,看看效果吧。 


Android设备Home、Menu和Back返回键的监听

在APP的操作中,有时需要监听系统按键,今天我就分享下自己的学习所得。 Menu键和Back键通过KeyDown事件就可以监听到,但Home键触发是系统事件,不能通过KeyDown简单的监控,但可以通...
  • nalw2012
  • nalw2012
  • 2015年11月06日 14:28
  • 3805

[Android] Android 物理键点击响应 Menu Home Back 键点击捕获

捕获安卓手机的物理按键(Menu Home Back)三个按键的点击动作
  • csdn_lexli
  • csdn_lexli
  • 2016年09月08日 23:05
  • 3527

在SurfaceView中添加系统控件,并且相互交互数据!

转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/android-game/306.html           ☞ 点击订阅 ☜ 本博客最新动态...
  • iverson3838
  • iverson3838
  • 2013年03月11日 22:15
  • 1095

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

Android statusBar添加back,home,menu按钮
  • king_sundi
  • king_sundi
  • 2011年01月14日 14:51
  • 924

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

由于完全改了status bar,建议先做几张png图片,加到 Frameworks/base/core/res/res/drawable 下。最好做一张背景图,替换 statusbar_...
  • dahuaishu2010_
  • dahuaishu2010_
  • 2012年08月01日 11:44
  • 2247

Android状态栏添加home,menu,back三个按钮

  • 2010年11月04日 11:10
  • 80KB
  • 下载

在android的状态栏(statusbar)中增加menu,home和back快捷键的方法

在状态栏上添加Menu,Back,Home三个按钮的方法,在下文有良好的阐述。详见: 《在android的状态栏(statusbar)中增加menu,home和back快捷键的方法》http:/...
  • telencool
  • telencool
  • 2012年03月13日 14:45
  • 1697

在android的状态栏(statusbar)中增加menu,home和back快捷键的方法

http://blog.csdn.net/caszhao/article/details/5986743 在状态栏上添加Menu,Back,Home三个按钮的方法,在下文有良好的阐述。详见:...
  • windlake
  • windlake
  • 2011年11月02日 22:36
  • 899

对在Android的状态栏添加Menu,Back,Home的改进

  • 2011年11月29日 21:46
  • 130KB
  • 下载

Android 2.3状态栏中添加menu home back快捷键

1、准备资源,修改XML文 准备几张图,这里我们准备添加home back和menu图标,就需要准备6张图,三张普通状态,三张按下的高亮状态图标: stat_home.png stat_home...
  • sam0535
  • sam0535
  • 2012年04月12日 10:49
  • 457
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android statusBar添加back,home,menu按钮
举报原因:
原因补充:

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