Nova PhoneGap框架 第七章 设备事件处理
我们的框架包含了几种设备事件的处理,目的是为了让我们的程序员更容易的完成代码。这些事件包括:回退键(Android)和横竖屏切换事件。
7.1 Android回退键
首先来说说回退键的事件处理。当用户在Android设备上按下回退键时,用户可能会希望:
l 应用程序能返回到上一页;
l 取消正在执行的任务,比如正在下载或是提交数据;
l 移除提示消息;
l 或者更多。
我们的框架正好解决了这些问题,让自定义的回退键事件变得异常简单。这是那些基于URL实现页面跳转的框架所望尘莫及的,比如基于jQuery Mobile的程序就很难处理特殊的回退键事件。
我们的框架是怎么做到的呢?
在应用程序启动的时候,我们就给Android设备的回退键绑定了一个事件处理程序, 另外在nova.Page类有一个backbuttonHandlers数组,用于存储这个页面所绑定的回退键事件。当用于按下回退键的时候,首先会检查当前页面的backbuttonHandlers数组是否为空,如果为空,就默认跳到上一个页面(nova.application下有一个history数组),如果不为空,那么就取出最近加入这个数组的那一个函数然后执行。
当应用程序跳转到新的页面之后,新页面的backbuttonHandlers都是为空的。因此不管之前页面的回退键处理程序是否顺利执行,都不会影响到新的页面。这也就保证了应用程序的健壮性。
理解了原理之后,完成代码就变得非常简单了。假如某个页面有一个按钮,点击这个按钮弹出一个提示,用户可以按回退键消除提示,也可以点击提示框的OK键进行消除。相应的代码可能会像下面的这样:
7.2 横竖屏切换事件
在第二章中说了,我们的应用程序有一个特殊的div#body,在应用程序启动的时候,设置了固定的宽和高。那么当横竖屏切换的时候,这个div#body是不是应该要重新计算宽和高呢?是的,就是这样。
我们的框架已经处理了横竖屏切换的事件,并且在基类nova.Page中完成了div#body的宽和高的重新计算。但是,我们自定义的继承自nova.Page的页面通常都还有些固定宽或高的元素,那么这时就需要重新计算这些元素宽和高了。
nova.Page基类中有一个onOrientationChanged事件处理函数,你可以在派生类中覆写这个方法。这个方法带2个参数,width和height,即屏幕旋转之后的宽和高。如果你需要处理固定宽高的元素,那么你应该使用这2个参数,而不是计算window的宽和高。这是因为对于Android设备,屏幕的旋转事件是在旋转刚刚开始的时候就会触发的,而刚刚开始旋转的时候,window对象的宽和高并不是真实的值。
Nova PhoneGap框架 第七章 设备事件处理的更多相关文章
- Nova PhoneGap框架 第四章 本地数据库
我一直想把EntityFramework(简称EF)的那一套搬过来,应用于HTML5 SQLite. 幸运的是,我几乎做到了,有些功能无法完成的那是因为SQLite本身不支持.至少从现在已经完成的功能 ...
- Nova PhoneGap框架 第六章 使用Mock
在我们的框架中引入了一个很重要的设计,那就是使用Mock. 这里的mock是指cordova.mock.js文件,它模拟了PhoneGap(Cordova)的API,从而可以在浏览器中运行测试我们的程 ...
- Nova PhoneGap框架 第三章 页面
页面在项目架构中是一个很重要的概念,它让我们能够将一个功能复杂的项目拆分成一个一个功能比较独立的小区域,这极大的提高了代码的可读性和可维护性. 在我们这个框架中,一个页面由JS和HTML两部分组成,首 ...
- Nova PhoneGap框架 第五章 文件结构
一个好的项目架构必然有着合理的文件结构,如果一个项目的文件组织混乱,那么可以断言一定是项目架构有问题. 合理的文件结构能够帮你更清晰的管理你的文件,并且当需要添加新的文件的时候,你的程序员很清楚应该加 ...
- Nova PhoneGap框架 第一章 前言
Nova PhoneGap Framework诞生于2012年11月,从第一个版本的发布到现在,这个框架经历了多个项目的考验.一直以来我们也持续更新这个框架,使其不断完善.到现在,这个框架已比较稳定了 ...
- Nova PhoneGap框架 第八章 滚动条
你可能会疑惑为什么滚动条这么常见的功能会在这里单独列出,但如果你有过PhoneGap开发经验的话,你就会发现要在Android 2.3 里面实现滚动条那真不是一件容易的事. 8.1 概述 目前主流的P ...
- Nova PhoneGap框架 总结
Nova PhoneGap Framework 是完全针对PhoneGap应用程序量身定做的,在这个框架下开发的应用程序很容易实现高质量的代码,很容易让程序拥有很好的性能和用户体验. 在经历了多个项目 ...
- Nova PhoneGap框架 第二章 理解index.html
跟绝大多数PhoneGap程序一样,Index.html是程序的入口.这个页面应该完成应用程序的初始化工作. 首先,让我们来看看这个页面通常都长什么样子: 下面我将一一解释这个页面都做了哪些初始化工作 ...
- Nova PhoneGap框架 第九章 控件
我们的框架中也提供了一些常用的控件,这些控件大多都依赖于我们的框架,也正是在我们的框架下才使得实现这些控件的变得更简单.但是我们的框架是不依赖与这些控件的,如果你用不上这些控件,你完全可以把相关的代码 ...
随机推荐
- PLSQL Developer 连接oracle(64) (instantclient)错误及解决方案
安装了PLSQL Developer 64bit,下载地址http://cy1.mqego.com/plsqldeveloperxx.zip. 1.安装完成后,输入数据库连接信息之后,提示如下错误 原 ...
- java中的多线程
什么是多线程? 首先得知道什么是线程? 线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行.也可以把它理解为代码运行的上下文.所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务. ...
- eclipse调试
http://blog.csdn.net/u012176591/article/details/23297889
- NHibernate开发入门
首先,我们了解一下ORM是什么?ORM指对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程 ...
- startssl申请配置免费https证书
之前给业务配置都是在沃通上申请免费证书,而后通过反向代理层的Nginx进行https认证. 今天来了个新需求,要求域名直接解析至阿里云SLB.https配置需要通过阿里云的控制台部署这倒无所谓,只是在 ...
- 工厂模式(Factory)
一.分类 工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的. 工厂模式主要分为三个,简单工厂模式(Simple Factory)/ 工厂方法模式(Fac ...
- 转:界面之下:还原真实的 MVC、MVP、MVVM 模式
前言 做客户端开发.前端开发对MVC.MVP.MVVM这些名词不了解也应该大致听过,都是为了解决图形界面应用程序复杂性管理问题而产生的应用架构模式.网上很多文章关于这方面的讨论比较杂乱,各种MV*模式 ...
- underscorejs 源码走读笔记
Underscore 简介 Underscore 是一个JavaScript实用库,提供了类似Prototype.js的一些功能,但是没有继承任何JavaScript内置对象.它弥补了部分jQuery ...
- Shell脚本基础
特别变量: $# 传递到脚本的参数个数$* 以一个单字符串显示所有向脚本传递的参数$$ 脚本运行的当前进程ID号$! 后台运行的最后一个进程的ID号$@ 与$#相同,但是使用时加引号,并在引号中返回每 ...
- 关于textarea中换行、回车、空格的识别与处理
需求:在textarea中输入文字,提交给后台后,后台输出在另一个页面,文字按原格式显示. 问题:如何还原输入框中的换行和空格? 兼容性:IE9以上.FF.chrome在换行处匹配/\n/ ...