ITPUB??ì3
ITPUB论坛 » 移动与游戏开发 » 呵呵 ,自己实现的一套用于企业应用的Me UI lib


标题: [原创] 呵呵 ,自己实现的一套用于企业应用的Me UI lib
离线 powertoy
一般会员



精华贴数 0
个人空间 0
技术积分 128 (13129)
社区积分 1 (31810)
注册日期 2002-1-16
论坛徽章:0
      
      

发表于 2008-4-22 10:23 
呵呵 ,自己实现的一套用于企业应用的Me UI lib

去年开始转向手机开发,主要做移动OA之类的企业应用, 对javame里面的一些高级UI甚为头疼,功能简陋,外形丑陋,不同手机差异巨大,基本不可用。这段时间参考CE的风格和MIDP 2.0里面的原来的东西, 自己实现一整套UI,并尽可能和原来的midp2的代码兼容,方便移植。


贴上图给大家秀秀, 过几天有空写个详细点说明文档, 代码就不能公布了,毕竟还要靠这个吃饭,呵呵。
讲讲大致内容和实现思路

1. 基本元件库
替换掉原来 form, stringItem,imageItem、textfield,choicegroup、 菜单,增加了checkbox和对话框。 并作了适当简化, 保证代码可移植的同时,也可以简化代码的开发工作量。
网上看到有网友作品未考虑到保持和原来代码的兼容,所有元素都需要子类自己画,移植性和子类开发工作量就差了一些。


form 分为title, workarea, commandbar 三个区域,子类可以覆盖实现,缺省的情况下,workarea会将添加到form的item以顺序的方式从上自下绘制, 如果需要特殊显示则可以重画workare区域, 但是仍然使用form来完成事件转发,菜单处理。 可以统一设置屏幕的背景,显示字体等,方便美工工作,而且在不同手机上都可以保持一致的现实风格。

根据我的经验,原来midp2中高级ui繁多的layout属性设置其实基本没有意义,各个手机实现有差异。在手机屏幕上,最常见的做法还是一行一个对象,显示最简单有效, 如果需要复杂的显示,则可以对对象进行组合,并能把事件委托到组合对象中进行处理。
所以form中的 Item主要分为2类,基本Item和ItemGroup, 后者由多个item构成,有自己的事件处理机制,便于实现比较复杂的对象布局。


基本使用代码和midp2中一致, 也就是将各种item append 到form中就可以了, 对于一些复杂的item,实现了一个ItemGroup组的概念,可以自行对item进行组合排列,提高显示效果。

另外相对midp 2做了改进, 所以的item都可以触发事件, 只要注册一个Action类就可以,比如

         item = new StringItem("电邮", user.getEmail());
                item.addAction(new Action() {
                        public void action(Item event) {
                                //show email box
                        }
                });
                append(item);

常见的列表不需要特殊实现,只要在form顺序增加item,设置允许滚动, 并加入分割条就可以了。


另外对textField进行了适当扩充, 允许设置显示行数, 也可以设置自动充满屏幕,如下图, 前面4个对象都是1行,最后正文内容可设置为自动充满剩余屏幕。 这样基本在开发表单时,子类不需要考虑使用像素进行屏幕绘制,基本代码编写方式可以和原来的高级ui一致。

public  TextField subject = new TextField("主题:", null, 200,
   1);  //显示1行
public static int MAX_CONTENT_SIZE = 5000;
public  TextField content = new TextField("内容:", null, 0,
   MAX_CONTENT_SIZE, 1); //0行表示自动充满



另外菜单部分借鉴了Swing 的事件处理机制进行了重写, 新的菜单使用事件类机制,比较符合桌面应用习惯, 并且能支持多级菜单和分隔条。


MenuItem childItem = new MenuItem("飞屁屁3");
  childItem.addAction(new Action() {
   public void action(Item event) {
    showMsg("二级菜单摸屁股");
   }
   
   
  });

2. 扩展元件库

主要是利用ItemGroup 组合的特性,制造一些比较复杂的item, 比如日历和树。利用基类form提供的事件处理机制,绘制比较复杂的控件也比较容易。





另外提供了一些 desktop 应用常见, 但是 midp中没有的功能, 比如对话框和等待条


3. 高级元件库

主要是提供企业应用里常见的一些文档格式的浏览。 比如word, excel, 图像, 文本等等。






系统菜单form




这套UI的另外一个好处是各个手机平台上显示都完全一致,免去了以前调试command和各种stringitem 的layout的痛苦。

给大家提供一个思路做为参考,欢迎拍砖。

[ 本帖最后由 powertoy 于 2008-4-22 10:36 编辑 ]


只看该作者    顶部
离线 powertoy
一般会员



精华贴数 0
个人空间 0
技术积分 128 (13129)
社区积分 1 (31810)
注册日期 2002-1-16
论坛徽章:0
      
      

发表于 2008-4-22 10:32 
另外补充一下, 文档的显示需要先在服务器端进行转换, 转换成自定义的数据结构以后分页传递到手机。 手机端并不需要安装pocket office等工具。


只看该作者    顶部
离线 greenflute


精华贴数 0
个人空间 0
技术积分 7028 (174)
社区积分 161 (2482)
注册日期 2001-10-26
论坛徽章:14
现任管理团队成员ITPUB元老管理团队2007贡献徽章会员2007贡献徽章2008北京奥运纪念徽章:沙滩排球2008年新春纪念徽章
      

发表于 2008-4-23 04:51 
PFPF


只看该作者    顶部
离线 justforregister
SAP


精华贴数 1
个人空间 10
技术积分 35173 (21)
社区积分 8029 (176)
注册日期 2005-6-10
论坛徽章:241
现任管理团队成员ITPUB元老NBA2008季后赛纪念徽章欧洲冠军杯纪念徽章NBA常规赛纪念章管理团队2007贡献徽章
参与2007年甲骨文全球大会(中国上海)纪念ITPUB北京香山2007年会纪念徽章会员2007贡献徽章2008北京奥运纪念徽章:网球2008北京奥运纪念徽章:马术体育版块博采纪念徽章

发表于 2008-4-24 22:38 
牛逼


__________________
只看该作者    顶部
离线 fkecq
初级会员



精华贴数 0
个人空间 0
技术积分 72 (20286)
社区积分 0 (84767)
注册日期 2003-6-6
论坛徽章:1
行业板块每日发贴之星     
      

发表于 2008-5-14 22:52 
学习下


只看该作者    顶部
离线 ousys
Robin


精华贴数 0
个人空间 0
技术积分 10 (89094)
社区积分 0 (1127729)
注册日期 2006-10-3
论坛徽章:0
      
      

发表于 2008-5-15 04:57 
界面很漂亮,学习学习


只看该作者    顶部
离线 wangjincheng100
初级会员



精华贴数 0
个人空间 0
技术积分 10 (89140)
社区积分 0 (1139275)
注册日期 2006-10-14
论坛徽章:0
      
      

发表于 2008-6-16 11:24 
有没有源代码阿,给我们看看阿


只看该作者    顶部
离线 Warren2007
初级会员



精华贴数 0
个人空间 0
技术积分 22 (49833)
社区积分 0 (1408565)
注册日期 2007-5-29
论坛徽章:0
      
      

发表于 2008-6-19 17:48 
学习……

学习……


只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问