ICS 系统栏分析(三)
来源:互联网 发布:sql语句 编辑:程序博客网 时间:2024/06/15 03:29
导航栏的实现
UI:重写了一个新的view——NavigationBarView,这个view由layout.navigation_bar.xml这个布局文件决定。
mNavigationBarView =
(NavigationBarView) View.inflate(context, R.layout.navigation_bar, null);
prepareNavigationBarView();
WindowManagerImpl.getDefault().addView(
mNavigationBarView, getNavigationBarLayoutParams());
WindowManager.LayoutParams.TYPE_NAVIGATION_BAR,
需要注意的是这个布局文件使用一个自定义的命名空间:
xmlns:systemui=http://schemas.android.com/apk/res/com.android.systemui
keyCode属性直接就指定了按键的键值。
systemui:keyCode="4"
事件:
一般键的处理:
在布局文件中可以看到,导航栏的按键都是KeyButtonView,在KeyButtonView.java中定义了按键处理
public boolean onTouchEvent(MotionEvent ev) {
。。。
case MotionEvent.ACTION_UP:
。。。
sendEvent(KeyEvent.ACTION_UP, 0);
。。。
}
sendEvent则是调用windowManager的方法直接向窗口分发按键事件,键值就是之前配置文件中定义的键值。
mWindowManager.injectInputEventNoWait(ev);
任务键没有对应的硬件键盘,需要特殊处理
private void prepareNavigationBarView() {
mNavigationBarView.reorient();
mNavigationBarView.getRecentsButton().setOnClickListener(mRecentsClickListener);//设置了一个listener
mNavigationBarView.getRecentsButton().setOnTouchListener(mRecentsPanel);
}
private View.OnClickListener mRecentsClickListener = new View.OnClickListener() {
public void onClick(View v) {
toggleRecentApps();//弹出任务面板
}
};
- ICS 系统栏分析(三)
- ICS 系统栏分析(二)
- ICS 系统栏分析(一)
- ICS 启用导航栏(2)
- Android 4.0 ICS Launher分析
- 航信三大系统ICS DCS CRS
- ELK 日志分析系统(三)
- 用户日志分析系统实战(三)
- ICS中launcher的滑动源码分析
- 编译android 4.0 (ICS)
- 新闻管理系统的需求分析(三)
- Android 编译系统(三)Main.mk分析
- STM32 eCos 启动代码分析(三)系统时钟滴答
- Cocos2d-x 2.0 粒子系统深入分析三部曲(三)
- Android 编译系统(三)Main.mk分析
- Cocos2d-x 2.0 粒子系统深入分析三部曲(三)
- Cocos2d-x 2.0 粒子系统深入分析三部曲(三)
- 学生信息管理系统(三)——界面分析
- 【Java编程】之反射机制
- C#多线程之信号量
- ICS 系统栏分析(二)
- C#多线程之互斥
- 模板类的使用
- ICS 系统栏分析(三)
- 输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数,
- ubuntu 升级svn至1.7版本
- c#图像处理-灰度处理(gray)
- Linux安装
- 作品展(六)
- Android开发效率—Eclipse快捷键
- 终于把sql数据库页面检验和的算法搞清除了
- 只谈处理器 且看Apple A4到A5的进化