ANDROID:在STATUS BAR 添加ICONS
来源:互联网 发布:江阴网络推广 编辑:程序博客网 时间:2024/04/30 04:56
转自:http://stulog.com/?post=245
在Android界面的系统status bar上添加菜单,并完成对应的系统功能。
这需要修改android sdk才能完成,我用的是android 1.6 版本。
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的右边横坐标。
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().这里借用的是frameworks/base/cmds/input/src/com/android/commands/input/Input.java中的sendKeyEvent函数,直接拷贝过来,按照需要稍微修改一下形参就可以了。
需要说明的是,点击statusBar可以拉出来一个notification列表,当这个列表显示出来的时候,icons的响应速度会非常慢,所以这时最好不让其可以下拉。具体做法是在StatusBarView的onTouchEvent()中设置mService.mExpanded为false。
- ANDROID:在STATUS BAR 添加ICONS
- Android Status bar添加耳机图标
- android status bar 之 status bar notifications
- Android Status Bar
- Android-transulcent-status-bar
- Android navigation bar and the status bar
- Android的status bar分析
- Android的status bar分析
- android-status bar :状态栏通知
- Android-transulcent-status-bar总结
- Android-transulcent-status-bar总结
- Android透明状态栏status bar
- Android-transulcent-status-bar总结
- 【android】隐藏title bar和system navigation bar,status bar
- Win32 SDK 添加状态栏Status Bar
- Status bar
- Android 实现Navigation Bar和Status Bar全透明
- Android 4.4 实现透明状态栏Translucent system bar(Status bar)
- php图片压缩
- 十年学会程序设计
- android 震动效果类
- ITL事务槽
- 应用程序共享(RTP Payload format for Application and Desktop Sharing)
- ANDROID:在STATUS BAR 添加ICONS
- Ajax优点和缺点
- 写有效率的SQL查询(I)
- 写有效率的SQL查询(I)
- 关于SQLite创建视图
- 使用RIS(远程部署)全新安装winXP的经验
- 数据库的基本知识
- 启用分页机制
- win7----telnet