郑昀@ultrapower |
产品名称 |
产品版本 |
Keyword: JavaME 二级菜单 |
MenuBarlet |
1.0.20 |
[J2ME]二级菜单演示
(MenuBarlet)
开源说明
我的资源:
https://files.cnblogs.com/zhengyun_ustc/menubar-1.0.20-src.rar
这个1.0.20版本的j2me软件,能够在Nokia S60系列、索爱K700C和摩托罗拉Pebl U6手机上运行。
提请注意的是,由于本源代码思路来自于网友相助,并且引入了jmobilecore/bluegammon/等开放源代码库的一些类,所以我也遵循GPL协议,请看后面的“开源版权声明”。
https://files.cnblogs.com/zhengyun_ustc/menubar-deployed.rar
Nokia S60系列安装程序,用数据线传menubar.jar到您的手机上即可安装。
摘要:
本文档给出MenuBarlet的开源说明。
第1章 简单描述MenuBarlet的功能和特别之处。
第2章 描述调用MenuBarlet的开源版权声明。
第3章 给出了 MenuBarlet的思路和设计细节。
1背景、功能和特别之处
摘要:本章 简单描述MenuBarlet的背景、功能和特别之处。
1.1. 手机上的二级菜单
首先,我们来定义什么是“二级菜单”,就是类似于Microsoft Windows的开始菜单。2005年底看到ucfly制作的强大无线软件ucweb,他们的二级菜单风格让我顿生觑睨之心。后来Opera mini的推出,更让我看到此种风格界面须立即学习。尚无思路之时,恰逢朋友是这方面的强手,从而得窥门径。不敢独享,遂开放代码,希望借此抛砖引玉,使得国内无线Java软件能够百花齐放。
这里给出Opera Mini的界面,让你有一个主观的感受:
1.2. 二级菜单的功能
我们提供的功能有:
针对手机上以下几种按键,菜单会自动伸缩或响应命令:
l KEY_SOFT_LEFT和KEY_SOFT_RIGHT,代表高端手机的两个左右软键;
l KEY_UP、KEY_DOWN、KEY_LEFT和KEY_RIGHT,上下左右按键;
l KEY_FIRE,代表高端手机的“Fire”键。
绘制的部分有四种:
l 主菜单,即第一级菜单;
l 子菜单,即第二级菜单;
l 屏幕下方的状态栏或者左右软键示意按钮;
l 整个屏幕的背景。
下图标明了手机上的按键:
下图给出了绘制部分的区域划分:
1.3. 特别之处
左右软按钮:
我们按照bluegammon的行事方式,将绘制底边左右软按钮封装到了SoftButtonControl类里面。这样,通过一个标志,可以设定两种不同的绘制风格。
其一如下所示:
其二:
第二种风格中,绘制的按钮矩形会自动随着左右软按钮的标题而伸缩。
不同机器键值不同:
如若要发布到不同厂商的机器上,需要根据不同机器的按键值而修改。即,因为同样是KEY_FIRE键,Nokia平台下定义的数值为-5,而摩托罗拉的v80/220/300/400/500/600则声明为20。
所以,你在发布的时候,必须针对此,选择用源代码中
MenuBar\src\com\ultrapower\canvas目录下的不同PlatformCanvas代码。比如要发布到Nokia手机上,则不用修改PlatformCanvas.java;发布到摩托罗拉手机上,则使用PlatformCanvas.motov文件中的代码替换PlatformCanvas.java;发布到三星手机上,则使用PlatformCanvas.samsung文件中的代码替换PlatformCanvas.java。
2 开源版权声明
由于我这个版本的 MenuBarlet 思路和部分代码来自于朋友,也是混合了bluegammon/jmobilecore等基础代码整合而来的,所以决定遵照GPL协议的大意开放源代码,您可以自由传播和修改,在遵照下面的约束条件的前提下:
条件1 |
只要你在MenuBarlet的每一副本上明显和恰当地出版版权声明,保持此许可证的声明和没有担保的声明完整无损,并和程序一起给每个其他的程序接受者一份许可证的副本,你就可以用任何媒体复制和发布你收到的原始的程序的源代码。你可以为转让副本的实际行动收取一定费用,但必须事先得到郑昀的同意。 |
条件2 |
你可以修改MenuBarlet程序的一个或几个副本或程序的任何部分,以此形成基于程序的作品。只要你同时满足下面的所有条件,你就可以按前面第一款的要求复制和发布这一经过修改的程序或作品。 a) 你必须在修改的文件中附有明确的说明:你修改了这一文件及具体的修改日期。 b) 你必须使你发布或出版的作品(它包含程序的全部或一部分,或包含由程序的全部或部分衍生的作品)允许第三方作为整体按许可证条款免费使用。 c) 如果修改的程序在运行时以交互方式读取命令,你必须使它在开始进入常规的交互使用方式时打印或显示声明:包括适当的版权声明和没有担保的声明(或者你提供担保的声明);用户可以按此许可证条款重新发布程序的说明;并告诉用户如何看到这一许可证的副本。(例外的情况:如果原始程序以交互方式工作,它并不打印这样的声明,你的基于程序的作品也就不用打印声明)。 |
这样,您就可以自由使用并传播本源代码,当然请您原封不动地保留原作者信息。
3 思路
摘要:本章给出了 MenuBarlet的思路和设计细节。
画图主方法中,判断是否画菜单,然后执行:
u 每次都事先清理屏幕,以防止某些区域不更新;
u 绘制背景图片在屏幕正中间;
u 画菜单;
u 画左右软键(抑或是状态栏)的菜单文字。
对于画二级菜单,我们则使用MenuBarCanvas的drawMenuBarandItem方法:
n 让当前所选的菜单索引值始终保持在菜单集合内;
n 画子菜单;
n 画主菜单。
至于具体画菜单,则由MenuBarCanvas的drawMenu方法完成:
l 圈定特定区域,也就是整个屏幕;
l 逐个菜单绘制边框和背景色;
l 绘制菜单标题。
那么,菜单项由MenuItem类来封装,并通过MenuBarCanvas的updateMenuItemCoordinate方法来计算每一个菜单项的偏移坐标。
响应按键,均由keyPressed和MenuKeyPressed来处理。
具体情况,请看MenuBarCanvas代码,注释非常详细,应该是一望即知。
编写者 |
日期 |
关键词 |
郑昀@ultrapower |
2006-02-16 |
Mobile 二级菜单,Canvas, Opera Mini, Java,J2ME |