在Android 2.3状态栏中增加menu,home和back快捷键的方法
来源:互联网 发布:php如何建站 编辑:程序博客网 时间:2024/05/17 01:50
之前看了
http://blog.csdn.net/freshui/archive/2010/11/24/6033377.aspx
http://blog.csdn.net/freshui/archive/2010/07/15/5738115.aspx
两篇文章说到如何在Android状态栏中增加menu,home和back快捷键的方法,经过研究发现上面的两篇文章的方法只是对android2.2以前
的版本有用,android2.3的代码和架构发生了不少变化,下面说说如何在在android2.3实现在状态栏中增加menu,home和back快捷键,本文大部分引用上面两篇文章,感谢两篇博文作者提供参考。
1、准备资源,修改XML文
准备几张图,这里我们准备添加home back和menu图标,就需要准备6张图,三张普通状态,三张按下的高亮状态图标:
stat_home.png
stat_home_pressed.png
stat_back.png
stat_back_pressed.png
stat_menu.png
stat_menu_pressed.png
把它们放在frameworks/base/packages/SystemUI/res/drawable/目录下
同时,[B]在[/B]frameworks/base/packages/SystemUI/res/drawable下创建三个imageButton的xml文件
xml_stat_home.xml
xml_stat_back.xml
xml_stat_menu.xml
修改status_bar.xml成如下
目录:frameworks/base/packages/SystemUI/res/layout/status_bar.xml
二 为按钮添加动态效果
改frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarView.java
在类中新增加四个成员(须导入android.widget.ImageButton和android.content.Context):
增加三个常量:(须导入android.view.KeyEvent;)
在构造函数StatusBarView中初始化mContext
注意”mContext=context;”须在”super(context,attrs);”后面,不然编译会报错
在onFinishInflate中,获取几个button 的handler,并设置touch事件,添加如下代码:
各button的touch事件添加如下:
为防止点击statusBar上的按钮, 触发标题栏的expend事件, 修改一下函数onInterceptTouchEvent,点击到不属于button区域时才允许解析Motion的event:
需要自己添加Intent
打开frameworks/base/core/java/android/content/Intent.java,增加下面的内容,由于我们的使用的API不公开,须加上/**@hide*/,不然编译会报错
接收并处理intent
修改StatusBarPolicy.java
目录:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarPolicy.java
首先在构造函数中加入Intent的filter,注册号这个intent的receiver。
filter.addAction(Intent.ACTION_ICONKEY_CHANGED);
接着在private BroadcastReceiver mIntentReceiver = newBroadcastReceiver() 加入Intent的receiver动作;
及处理函数:
须导入以下包
import android.view.IWindowManager;
import android.os.SystemClock;
import android.view.KeyEvent;
StatusBar通知栏屏蔽按钮
当拉出expand的通知栏时,按钮的响应非常慢,这时最好将按钮给屏蔽掉,我们在 statusBarView.java中增加两个方法:
拉出或收回通知栏中,就可以调用这个函数来显示或隐藏这几个按钮。
修改文件:statusBarService.java
目录:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarService.java
编译工程(使用的是伟研的WY-S5PV210开发板)
#source #/opt/android_froyo_smdk/build/envsetup.sh
#export TARGET_PRODUCT=full_smdkv210
#mmm frameworks/base/
把编译生成的相关文件放进SD卡对应的目录即可,最后的效果如图
- 在Android 2.3状态栏中增加menu,home和back快捷键的方法
- 在android的状态栏(statusbar)中增加menu,home和back快捷键的方法
- (转)在android的状态栏(statusbar)中增加menu,home和back快捷键的方法
- 在android的状态栏中增加menu,home和back快捷键的方法
- 在android的状态栏(statusbar)中增加menu,home和back快捷键的方法
- 在android的状态栏(statusbar)中增加menu,home和back快捷键的方法
- 在android的状态栏(statusbar)中增加menu,home和back快捷键的方法
- 在android的状态栏(statusbar)中增加menu,home和back快捷键的方法
- 在android的状态栏(statusbar)中增加menu,home和back快捷键的方法
- 在android的状态栏(statusbar)中增加menu,home和back快捷键的方法
- 在android的状态栏(statusbar)中增加menu,home和back快捷键的方法
- 在Android的状态栏(statusbar)中增加menu,home和back快捷键的方法
- 在android的状态栏(statusbar)中增加menu,home和back快捷键的方法
- 在Android 2.3状态栏中添加menu,home和back快捷键的方法
- 在Android 2.3状态栏中添加menu,home和back快捷键的方法
- Android 2.3状态栏中添加menu,home和back快捷键
- Android 2.3状态栏中添加menu home back快捷键
- Android 2.3状态栏中添加menu home back快捷键
- [EntLib]微软企业库5.0 学习之路——第十步、使用Unity解耦你的系统—PART2——了解Unity的使用方法(3)
- 初次安装oracle11g
- KY 应该做到的16件事
- Déjà vu
- C++的类与C#的类的区别
- 在Android 2.3状态栏中增加menu,home和back快捷键的方法
- 对称加密算法-PBE算法
- 模版特化
- 当memset遇到函数参数中的指针时
- 酷壳陈皓:如何学好C++语言(转)
- C# 中的委托和事件
- 未来的学习计划
- opencms上传文件
- 内存分配基础知识