深入Polish--如何控制GUI

如何控制gui

1.       启动gui

设置usePolishGui属性,该属性在build.xml<build>元素下。Polish会自动加入必要的代码。

 true或者yes被设置,gui会启动,触发的目标设备不满足基本要求(如,最大jar大小要大于100kb,色深至少8位),这时候会使用基本的gui。如果属性是always,gui总会被使用。

相应代码(build.xml):

<j2mepolish>

<info

license="GPL"

name="Roadrunner"

vendorName="A reader."

version="0.0.1"

jarName="${polish.vendor}-${polish.name}-roadrunner.jar"

/>

<deviceRequirements>

<requirement name="Identifier" value="Generic/midp1" />

</deviceRequirements>

<build

usePolishGui="true"

<midlet class="com.apress.roadrunner.Roadrunner" />

</build>

<emulator />

</j2mepolish>

你也可也通过定义预处理指令polish.usePolishGui

以下代码用来为s60启动gui

<j2mepolish>

<info

license="GPL"

name="Roadrunner"

vendorName="A reader."

version="0.0.1"

jarName="${polish.vendor}-${polish.name}-roadrunner.jar"

/>

<deviceRequirements>

<requirement name="Identifier" value="Generic/midp1" />

</deviceRequirements>

<build

usePolishGui="false"

<midlet class="com.apress.roadrunner.Roadrunner" />

<variables>

<!-- activate the GUI for Series 60 devices -->

<variable

name="polish.usePolishGui"

value="true"

if="polish.group.Series60" />

</variables>

</build>

<emulator />

</j2mepolish>

2.       配置gui

a)         全屏模式

                        i.              设置<build>元素的fullScreen (yes/true, no/false , menu)。当程序使用command时候, 你必须使用menu。这时候菜单条由polish绘制,而且可以通过css来设计

                      ii.              使用polish.FullScreen预处理参数

<j2mepolish>

<info

license="GPL"

name="Roadrunner"

vendorName="A reader."

version="0.0.1"

jarName="${polish.vendor}-${polish.name}-roadrunner.jar"

/>

<deviceRequirements>

<requirement name="Identifier" value="Generic/midp1" />

</deviceRequirements>

<build

usePolishGui="true"

fullscreen="menu"

<midlet class="com.apress.roadrunner.Roadrunner" />

<variables>

<!-- Use the normal fullscreen for Siemens devices -->

<variable

name="polish.FullScreen"

value="true"

if="polish.vendor == Siemens" />

</variables>

</build>

<emulator />

</j2mepolish>

有些,midp2.0设备不支持menu模式,因为他们不在按软键的同时传递按键事件。POLISH通过查找device database来决定是否支持menu模式,如果hasCommandKey被设置,这设备支持纯midp 2.0 menu模式。当然你可以通过设置key.LeftSoftKeykey.RightSotfKey来定义键值。当没有定义时候,-6是左软键,-7是右软键,

 

支持全屏模式的代码参考:

<device

supportsPolishGui="true">

<identifier>Siemens/CX65</identifier>

<features>hasCommandKeyEvents</features>

<capability name="ScreenSize" value="132x176"/>

<capability name="key.LeftSoftKey" value="-1" />

<capability name="key.RightSoftKey" value="-4" />

</device>,

 

b)        Commands,Labels,.gui行为

预处理命令                            解析

polish.skipArgume ntCheck               方法参数不会被检查,有助于提高运行时的表现和减少应用程序大小

polish.animationInterval (默认100)         动画时间间隔。

polish.classes.ImageLoader                通常polishjar文件中用Image.createImage(String url)加载图片。这个方法在很多时候适用,但有时图像必须从rms或者Internet获取。这是你可以定义polish.classes.ImageLoader,这个类必须实现java.microedition.lcdui.Image loadImage(String url)throws IOException来提取图形。

polish.ChoiceGroup.suppressMarkCommands  默认为false ,一个多选的listChoiceGroup默认将命令”mark”,”unmark”添加到菜单,如果想取消这些命令,设置这个参数为true

polish.ChoiceGroup.suppressSelectCommand  默认为false,一个内含的,或弹出的ChoiceGroup(/list)通常有一个选择命令,同样可取消

polish.TextField.useDirectInput            默认为false,设置允许TextfieldsTextBoxes的直接输入模式

polish.TextField.suppressClearCommand    默认f alse 取消Textfieldclear命令

polish.TextField.suppressDeleteCommand   默认false取消Textfielddelete命令

polish.TextField.suppressCommands        默认f alse 取消Textfieldclera delete命令

polish.TextField.showInputInfo            默认true 当前输入法提示

polish.TextField.InputTimeout             默认1000 输入时间间隔

polish.TextField.charactersKey1            默认 ".,!?:/@_-+1" 数字键1被按时,出现的可选符号

polish.TextField.charactersKey2            " abc2" 同上

polish.TextField.charactersKey3                    "def3"同上

polish.TextField.charactersKey3                    "ghi4" 同上

polish.TextField.charactersKey5                   "jkl5" 同上

polish.TextField.charactersKey6                   "mno6"同上

polish.TextField.charactersKey7                   "pqrs7"同上

polish.TextField.charactersKey8                    "tuv8"同上

polish.TextField.charactersKey9                   "wxyz9"同上

polish.TextField.charactersKey0                    " 0"同上,在摩托罗拉手机上这能有效控制输入法切换

polish.TextField.charactersKeyStar                ".,!?:/@_-+"同上在摩托罗拉手机上这能有效输入空格

 

polish.TextField.charactersKeyPound           同上 在索爱机子上有效输入空格

polish.command.ok                                     默认OK 当全屏时候,OK命令的标签

polish.command.cancel                               默认Cancel Cancel命令的标签

polish.command.select                                 默认Select 内含或互斥的listChoiceGroupselect命令标签

polish.command.mark                   默认mark,多选listchoicegroupmark命令的标签

polish.command.unmark                              默认 unmark,多选listchoicegroupmark命令的标签

polish.command.options                  默认options,打开选项的命令的标签

polish.command.delete                   默认Delete  TextFielddelete命令标签

polish.command.clear                               默认Clear  TextFieldClear  命令标签

 

polish.title.input                        默认input,Textbox对应的TextField没有标签时候使用的标签

polish.usePolishGui                      启动,取消PolishiGui

polish.FullScreen                        全屏模式Possible values are true, false, and menu.

3.       控制Textfield

默认使用原生的输入框,当用户希望输入时候,一个原生的TextField在第二个屏幕打开,这个方法的好处是用户可以使用全部的输入辅助功能,如T9,手写识别等,你经常需要使用原生输入模式来处理触摸笔输入设备或处理长字母输入。

你可以启动直接输入模式,通过textfield-direct-input CSS属性,或者设置TextField.useDirectInput预处理指令。使用预处理指令能够提供你的程序性能和减少程序大小,但是在这种情况下对所有的TextfieldTextBox都是使用直接输入模式的。

<variable name="polish.TextField. useDirectInput" value="true" if="!polish.hasPointerEvents"/>.将在没有触摸笔的机器上使用直接输入模式。

     当你使用直接输入模式你可能希望根据你的本地化使用额外的字母,你可以定义polish.TextField.charactersKey0等,如<variable name="polish. TextField. charactersKey2" value="abc2äåæ" />.

如果你需要使用直接输入模式,你可以使用任何输入,但是通过设定输入模式为数字,先创建一个NUMERIC TextField然后设置contraintsany ,如

field =new TextField( "password: ", null, 20, TextField.NUMERIC );

field.setConstraints ( TextField.ANY );.

如果你的Textfield通常输入的是数字的话,这样可以提高应用程序的使用效率

 

4.       使用不同的设计

<j2mepolish>

<info

license="GPL"

name="Roadrunner"

vendorName="A reader."

version="0.0.1"

jarName="${polish.vendor}-${polish.name}-roadrunner.jar"

168 CHAPTER 12 WORKING WITH THE GUI/>

<deviceRequirements>

<requirement name="Identifier" value="Generic/midp1" />

</deviceRequirements>

<!-- symbol: don't check method-parameters: -->

<build

usePolishGui="true"

fullscreen="menu">

<midlet class="com.apress.roadrunner.Roadrunner" />

<resources

dir="resources2"/>

</build>

<emulator />

</j2mepolish>

你可以用这种机制来为不同的用户群定义不同的表现,你同样可以在不同的build使用不同的文字。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值