BlackBerry高级UI设计

来源:互联网 发布:mac点击鼠标右键 编辑:程序博客网 时间:2024/05/07 02:03

作者: 王志刚

 

概论

 

 

 

 

这篇文讲述是如 BlackBerry 设备上应用 UI 效果文档的内容括如:

 

1.    基于 MIDP UI

2.    基于 3rd-party UI library 的应用

3.    基于 BlackBerry UI 应用

4.    基于 SVG(JSR 226) UI 设计

5.    基于 Widget UI 设计

 

本文的成部是以以一个传统动应的九宫格程序的 UI 计和范例,论并重介绍 了在 BlackBerry 平台上设 UI 需要虑和技术,好的 BlackBerry 应用

 

通过对 UI 用的本文也及到 BlackBerry 用开中如三方应用 Library 集成, BlackBerry 网络应用开发等方面知识,文中涉及的参文档,都可以从 RIM 开发 论坛上载得

 

 

在阅读参考篇文档时,读者该对 BlackBerry 上的基开工和开发过程有些解,果想 参阅这内容可以 BlackBerry 中国


 

1    MIDP  UI 设计

 

 

 

  

上面的是整个 MIDP LCDUI 组成这个包括完 MIDLP 高级和 UI 库。

 

1.1     MIDP UI

 

我们在一节介绍 LCDUI 库的具组成图。Screen 属于级图形用户界面Canvas 是低级形用界面组件,在同时刻只能有唯一一个 Screen 或者 Canvas 类的子显示 幕上。


 

 

使用格这实现本身可以

完成的办 UI 组件 CustomItem, 制定是使 CustomItem 个九图所示

 

 

 

源代码下所:

 

public class GridItem extends CustomItem {

private Image image;

public MyItem(Image image, String title,int width,int height)

{

this.image = image;

}

public void paint(Graphics g, int w, int h)

{


 

g.drawImage(this.image, w/2, 0, Graphics.HCENTER | Graphics.TOP);

g.drawString(this.title, w/2, h - g.getFont().getHeight(), Graphics.HCENTER | Graphics.TOP);

}

 

 

 

通过对 Form  定制 item  置背图片找到 work  around  办法,放置们的宫格图标,剩下的是对 Form 序的设

 

Form f = new Form("CustomItem");

int tempWidth = f.getWidth() / 4;

int tempHeight = 60;

for(int i = 0; i < 9;i++)

{

String imgSrc = "/img/" + i + ".png";

try

{

Image img = Image.createImage(imgSrc);

MyItem mi = new MyItem(img,String.valueOf(i) + " item",tempWidth,tempHeight);

mi.setLayout( Item.LAYOUT_CENTER );

f.append( mi );

}

catch(IOException ioe)

{

ioe.printStackTrace();

}

}

display.setCurrent( f );

 

1.2     MIDP UI

 

与高级 UI 比, UI 就自由多,何时候我们可以 repaint()重绘事,调完了

repaint()刻返 paint()函数另一个门的线程来完成

 

相对于 UI 富的组,低级 UI

 

我们从 javax.microedition.lcdui.Canvas 开始们的低级 UI,我要用低级 UI 要继承

Canvas 抽象,在 Canvas 心是 paint()个方法这个法做是负责绘制幕上画面, 每当屏需要新绘制时,就会生重事件时,系统就自动 paint(),并传入 Graphics 对象。

 

 

任何时候们都以通调用  reapaint()方法来产生重绘事,它两个法,一个参数, 分别用指示始坐标(X,Y,长宽另一需要任参数代表整个画面重绘制。

 

我们可通过 getWidth() getHeight() 获得 Canvas 前范大小每当 Canvas 围大 生变化,就自动 Canvas 类的 sizeChanged()方法。


 

下面是用的低级 CANVAS API 绘制宫格程序的源码:

 

public class MenuCanvas extends Canvas implements CommandListener {

private String[] menuName = new String[] { "login", "picture", "wap",

"phone", "call", "goto", "fuck", "music", "video" };

private int canvaWidth = -1, canvaHeight = -1;

private int maxHeight = -1, imgWidth = -1, imgHeight = -1;

private int focus = 0;

private int fontHeight = -1;

private Image menuImg[] = new Image[9];

private Command exit;

 

public MenuCanvas() {

exit = new Command("Exit", Command.EXIT, 1);

addCommand(exit);

setCommandListener(this); canvaWidth = getWidth(); canvaHeight = getHeight(); try {

for (int i = 0; i < menuImg.length; i++) {

menuImg[i] = Image.createImage(28, 28); Graphics g = menuImg[i].getGraphics(); g.translate(-28 * i, 0);

}

} catch (Exception e) {

System.out.println(e.toString());

}

imgWidth = menuImg[0].getWidth();

imgHeight = menuImg[0].getHeight();

fontHeight = Font.getDefaultFont().getHeight();

maxHeight = imgHeight + fontHeight;

}

 

public void paint(Graphics g) {

int color = g.getColor();

g.setColor(0xFFFFFF);

g.fillRect(0, 0, canvaWidth, canvaHeight);

int cellWidth = canvaWidth / 3; int cellHeight = canvaHeight / 3; g.setColor(color);

for (int i = 0; i < menuImg.length; i++) {

g.drawImage(menuImg[i], cellWidth * (i % 3)

+ (cellWidth - imgWidth) / 2, cellHeight * (i / 3)

+ (cellHeight - maxHeight) / 2, Graphics.TOP

| Graphics.LEFT);

int fontWidth = Font.getDefaultFont().stringWidth(menuName[i]);

g.drawString(menuName[i], cellWidth * (i % 3)

+ (cellWidth - fontWidth) / 2, cellHeight * (i / 3)

+ (cellHeight - maxHeight) / 2 + imgHeight + 1,

Graphics.TOP | Graphics.LEFT);

if (i == focus) {

g.drawRect(cellWidth * (i % 3) + (cellWidth - imgWidth) / 2,

cellHeight * (i / 3) + (cellHeight - maxHeight) / 2, imgWidth + 1, imgHeight + 1);

}

}


 

 

}

 

public void keyPressed(int key) {

int action = getKeyAction(key);

switch (action) {

case FIRE:

Alert alert = new Alert("You select:", menuName[focus],

menuImg[focus], AlertType.INFO);

alert.setTimeout(Alert.FOREVER);

break;

case UP:

focus = focus - 3;

if (focus < 0) {

focus = focus + 9;

}

break;

……

repaint();

serviceRepaints();

}

 

public void commandAction(Command c, Displayable dpa) {

if (c == exit) {

}

}

}

最后得的效图如所示

 

 

 


2 基于 Third party  UI 库的设计

 

直接使用 MIDP UI 来做应界面接口,很多时候要大的编程和设计工。为减轻 开发者负担,J2ME 台上也很多样的 UI 设计支库,节我 LWUIT 应用比较广 泛的例为例说明如果 BlackBerry J2ME 上使用 GUI Library 去设这个九格程

 

2.1 LWUIT UI 库的设计规范

 

The Lightweight UI Toolkit (LWUIT) 是一轻量级 JavaME UI 包。LWUIT 类似 Swing MVC 架构,支持多布局Layouts, 皮肤, , 摸屏, 动画效果, Rich , 3D 集成, Painter, 对画 , I18N/L10N 等。

 

Sun 2008 年的 JavaOne 上向开区推荐了 LWUIT预先发的二制文件 库,附工具扩展文档,让开者可快速上手,现在 Sun 个源代都开放来,方便 开发者 LUWIT JavaME 。关于 LWUIT 库的使用,以从 SUN 的官方基本示 例和说的文

 

 

九宫格白了是几个按钮,摆整整齐。既然是这样先做个 MainForm, GridLayout() 局,然 Form 几个按,每个按钮代表一个 Form

 

具体步如下:

 

1. MainForm 中以 GridLayout 形式列九按钮

 

2.建立 BaseForm,加一个 BackCommand

 

3.创建 9 Form 继承自 BaseForm

 

public class MainForm extends Form implements ActionListener {

public static String currentText;

Command Option_CMD = new Command("", 0); Command Exit_CMD = new Command("退", 1);

public MainForm() {

//设置体翻效果

Transition in = CommonTransitions.createSlide(CommonTransitions.SLIDE_HORIZONTAL, false, 300);

setTransitionInAnimator(in);

//设置 currentText为了点击钮进入 Form回退时焦点然在这 个按钮上

if (currentText == null) {

currentText = "";九宫说白几个按,摆整整齐齐。既然这样先做个

MainForm, GridLayout(),然 Form 面做几按钮每一个按钮代表 Form

 

 

 

 

setLayout(new BorderLayout());


 

getTitleComponent().setVisible(false);

try {

 

String[] texts = new String[]{

"menu1",

"menu2",

"menu3",

"menu4",

"menu5",

"mene6",

"menu7",

"menu8",

menu9};

/*

面是 LCDUI 页面布的主框架

*/

Container buttonContainer = new Container(new GridLayout(3, 3));

for (int i = 0; i < texts.length; i++) {

Image unsel_img = r2.getImage(imgNames[i] + ".png");

final Button b = new Button(texts[i], unsel_img);

//setRolloverIcon 当按钮选中时

b.setRolloverIcon(r2.getImage(imgNames[i] + "_sel.png")); b.setAlignment(Label.CENTER); b.setTextPosition(Label.BOTTOM); b.setUIID("DemoButton"); buttonContainer.addComponent(b);

}

addComponent(BorderLayout.CENTER, buttonContainer);

addCommand(Option_CMD); addCommand(Exit_CMD); addCommandListener(this); show();

} catch (IOException ex) {

ex.printStackTrace();

}

}

}

}

}

 

 

最后 LWUIT 现的效果,和我基于MIDP高级UI的效果较相。这需要注是,在BlackBerry 使用第jar库的时,需把相JAR库转成BlackBerry上可以行的cod件。

 

为什么讨论3rd-partyUI library,也为了BlackBerry自己的UI Library的效,在KVM平台上应用UI计,BlackBerryUI Library独树一的。


 

3 基于 BlackBerry  UI 组件的设计

 

使用过LWUIT的布局组件再使用BlackBerry原生的UI组件设计UI就会发现个非悉。

BlackberryUI件功更多,使用更灵活也更加便关于BlackBerryUI基本件的介绍,可以参阅BlackBerry基本UI<<BlackBerry用户面开实例>>

了解基本UI的设之后,BlackBerryUI布局组,可设置UI组件到BlackBerry 的效果,可以得一个成的BlackBerry UI幕布局现的宫格 的介绍这里不详细叙述了。

 

4 基于 SVG UI 设计

 

4.1  什么 SVG

 

SVG是可扩展2D矢量编程范,W3C支持的种标,我们这个九宫的主UI以用 SVG相当效果

在过去年中图像图形技术曾使出印刷行业发生了场深的技术革命,使老的刷术 融入了速发的信息产业。随着 Internet 技术普及和展,像图形技术作为 Web 技术 的基础更将建立一个全新的联网业,发挥至关重的作。然而,目前的 Internet 技术 在图形像方,应该说还处在轻阶,从浏览器的核技术看,其对于图形像的持还 仅仅局于对像的简单显示,着应的逐渐深入,图技术身的一些缺点,文件大、 在不同备上示效果不同等问日益出,从某种程度讲也制了 Web 浏览技术进一 展。

 

 

,众业内人士针对 Web 浏览图像形功能持较这一缺点提出了进措。近年 来,各软件商和组织纷纷推自己矢量图形规范,要代 Adobe Systems Inc.制定的 PGMLPrecision Graphics Markup Language)、CCLRC 提出的 Web SchematicsAutodesk, Inc 和微 软等提 VMLVector Markup Language)。外,一公司始制作自己的 plug-in 来支持矢 量图形浏览但这些插件都由缺乏平台的支持,以没有好的配套编辑工,而能得 到网上广泛用。正是在这种况下为统一标准,结目前混乱局面W3C 组织于 1998

8 专门成 SVG 工作组力于形标准的制定工,并于 1999 2 11 发布了一个 讨论草,后经修订于最近发草案。

 

SVG 是一种 XML 用来描二维量图形和/点阵合图标语言其全是可升 级矢量形规Scalable Vector Graphics。其中,"扩展"scalable在图形像技上指的 是它不限于个固定的分辨率大小譬如可以在不同辨率屏幕上以相同的小显,也 可以在一个页中以不同的大或观局或观细节;而网络术上指的是这一范能与其 它规范融合从而满足更广泛用户求,适合于更广的应方式"矢量"vector)是 范中描了直线、曲线、何图,而无须  PNGJPEG  图像式那样象素行描 这使得成了 SVG XML 文档小,载速度也大大提""graphics)是它提了对


 

矢量和/栅格形的描,填了大多数基于 XML 的置语言范对复图形述的空 白。

 

SVG 规范定 SVG 征、语和显效果,包括模块 XML 间(namespace)和

SVG 文档对模型(DOM)。在以的草中, SVG 定义一个 DTD这个 DTD 支持样单的 引用。这样来,SVG 就不再一个定义的全包容的言规,而需要浏览工额外有对 样式单件的理能力。出于这考虑在新近出台的 SVG 八个,为 SVG 了两种 不同的式,样式化 SVG 和交换型 SVG,它各自有同的 DTD MIME 。样 SVG 许对图对象行样式添加,它以通引用外部样式文、在件头中预先进行式声和通 过属性元素义样式三种方式使用样单,是 SVG 用于网环境存储格。而换型

SVG 取消了样式持,完使用素属性描述各个形对的显示效果。在来的络传 输中,换型 SVG 当现在刷业广泛使用的图形格--EPS 式的络版。且,于所有 显示信都封 XML 的属性,交 SVG 可以作为 XSLT 转换后所得到的果文格式, 广泛应 XML 示效果描述

 

4.2 Mobile svg

 

J2ME Java 2 内三大要分之一,其目的在供诸手机PDA 等消费电子产 嵌入式统开应用程式的平台简单说,只要手机厂在其业平台上提供可执行 J2ME

JAVA 虚拟机(KVM)则利用 J2ME 开发出来的应用式便在该手机上直接J2ME 主要的意是望能把手机厂商软体商连结起来,弥在消性电子产品或嵌式系上开 发应用式的口。由于现阶段机大皆采 J2ME 平台包括 NokiaMotorolaSony

Ericsson Siemens 等,因此在 J2ME 台的手机逐普及下,软体厂商也理成的提高 了在手上开应用程式的意愿。

于此负责 Java Profile JCP 组织, 2004 公布了一个于行平台

2D 矢量形功(Package)-Scalable 2D Vector Graphics API因其 JSR(Java Specification Request)标号 226故我们 JSR 226 JSR 226 是由 Nokia 家手大厂主制订,其他 的专家(Expert Group)员包括 SonyEricssonMotorolaSiemensSun MicrosystemsTinyLine IBMTexas InstrumentsSymbian...等等。

J2ME 发环境上JSR 226 格定缩放 2D 图形程式界,并须支

SVG  Tiny  Profile相容于 SVG-T  1.1行平台和 OpenVG 差不多,皆用于忆体容量 屏幕大及计效能有限的行动置上但有 OpenVG 的是,JSR 226 一套为高 矢量绘标准此规格提供了可来绘制 Scalable 2D vector images API 件,其包含了 SVG 格式的像档。

由于 JSR 226 SVG Tiny Profile 特性关係,JSR 226 具有延机制能力。 随着 SVG profiles 能的发,才达到完全支持的果。JSR 226 能透过 OpenVG 函式库加以作,并且充分利矢量形硬体加速的功,对于 JSR 226 效能的现绝有正 面的助。最说明 JSR 226 程式界的应,主要目包地图视觉化、可放的

(icon)及其必须符合自由缩需求进阶应用

 

4.3 RIM svg

 

借助于 SVG 现九局,我 UI 修改就常方便们这部分 SVG 子,希 望达到效果使用 SVG 原始文来布我们的九宫格 UI时, RIM JSR226 的支


 

来对用界面件做出响应。通这个式,我们可以熟和了 BlackBerry SVG 过程和法。

 

 

 

根据最 BlackBerry Browser 规范svgtiny1.2 已经在 BlackBerry 得到了持。

BlackBerry SVG 的支 HTML 成,也以采用 Java 地应用方式集成。

 

步骤一

 

编辑原始 SVG 文件

 

由于 SVG 是一种基 XML 的标,所以有很基于 XML 编辑格的具来 原始 SVG 。一 Adobe svgview,一个中人开的工具, SVGDeveloper

 

对于 SVG 辑,以用 BlackBerry 的自己的选择 Plazmic Composer for BlackBerry Smartphones个工本身是来作为 BlackBerry 上的题和画制作的工具是它可以用 来对 SVG 编辑。

 

在第 6 章,我也会介绍用这个具来 BlackBerry 的主和动

 

在这里 SVGDeveloper 为例,明一基本的 SVG 文件的辑已开发过,关于 SVGDevelper 使用和安装下载可以 SVGDevelper 官方面我们使 SVGDeveloper 辑一个 sample.svg 文件


 

 

 

 

对于生 sample.svg 源文件如果开,可以看到如内容我们分别解释如

 

<?xml version="1.0" encoding="utf-8" standalone="no"?>

 

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11- flat-20030114.dtd">

 

<svg width="480" height="360" version="1.1" xmlns="http://www.w3.org/2000/svg"

xmlns:xlink="http://www.w3.org/1999/xlink">

 

上面的是 SVG 源文就是 XML 件的,描述了 SVG 的版 xml 本信息

 

<image id="menuimg1" x="75" y="59" width="81" height="58" xlink:href="title0_png_1_img_1_1.png" transform="matrix(0.9999999,0,0,0.52,-33.00167,-9.760333)" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" />

 

<!— image 2 to 8 -->

 

<image id="menuimg9" x="383" y="278" width="107" height="55" xlink:href="title8_png_10_img_1_1.png" transform="matrix(1,0,0,1,-46,-40)" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" />

 

上面的时 xml 文件 image 分,就是我们 svg 件中入图标文件的内。菜图标 2

8 省略掉


 

<text x="77" y="129" space="preserve" font-family="Tahoma" font-size="12" fill="#000000" stroke="none" stroke-opacity="0" transform="matrix(2.49,0,-0.067,0.9999999,-142.674,-52.00032)" xmlns="http://www.w3.org/2000/svg">

 

menu1</text>

 

<!— munu text 2 to 8 -->

 

<text x="77" y="129" space="preserve" font-family="Tahoma" font-size="12" fill="#000000"

stroke="none" stroke-opacity="0" transform="matrix(2.49,0,-

0.06700001,0.9999999,165.3164,175.9896)" xmlns="http://www.w3.org/2000/svg">

 

menu9</text>

 

上面的时 xml 文件单项的字描部分,也就是我 svg 文件中引入菜单述的容。 菜单文字 2 8 了。

 

<line id="menuline1" idx1="19" y1="77" x2="129" y2="77" stroke="#0099CC" stroke-opacity="1" transform="matrix(0.6129999,0,0,0.9999999,44.97239,137.9971)" opacity="1" stroke-width="4" xmlns="http://www.w3.org/2000/svg" />

 

<!— mune underline 2 to 8 -->

 

<line id="menuline9" idx1="19" y1="77" x2="129" y2="77" stroke="#0099CC" stroke-opacity="1" transform="matrix(0.6129999,0,0,0.9999999,187.9734,138.9976)" opacity="1" stroke-width="4" xmlns="http://www.w3.org/2000/svg" />

 

</svg>

 

上面的是 xml 文件单项下的高的下划线部分,就是们在 svg 文件中入菜突出 的内容下划线 2 8 省略掉

 

步骤二

 

 

对于 SVG 的原文件操作,们可直接选择基于浏器上作, DOM Javascript 式, 通过 Widget 技术览器应直接作。还有一种选是使用 J2ME API 来对 SVG 文件行操 作。在文中我们选择使用 J2ME API 来对 SVG 原始文进行作,达到的效果,当户选择

 SVG 图标,响标会出

 

建立 Java 应用添加个基本基于 canvas 用的的 java 中,这个应用需下内:

 

由于我是一九宫 UI 应用序,虑的就对用键盘输入的响应这里两种 可以响获取键盘或者滚轮之的手用户输入时间,种方是通过 canvas 应接,正 如前面 UI 法中应的那。另外一种方式通过 SVG 元素身提供现的件响应 接口来获获用户输入事件。


 

org.w3c.dom.events 户输入件提的事件类型包括下几类型

 

click 点击

 

DOMActivate click 类似 DOMFocusIn 获取 DOMFocusOut 点移出 相应的理示逻辑如下所示

 

EventListener listen1 = new MyEventListener();

 

// Listen to click events, during the bubbling phase

 

SVGElement myRect = (SVGElement)document.getElementById();

 

myRect.addEventListener("click", listen1, false);

 

由于本 item 比较多就不一实现这样的方了, canvas 获取滚移动后动 态显示划线方式就可以了 5 ,我们会继续讨论 dom 的编程法。

 

JSR226 SVG 发过程,需引入的主如下个:

 

import javax.microedition.m2g.*;

 

import org.w3c.dom.*;

 

import org.w3c.dom.svg.*;

 

正如名所示这几个 package 具体用就不详述了SVG 元素用到 MIDP 的高级 UI 组件上也可应用到 MIDP 低级 UI 件上。这里我们是以 Canvas 例说明 SVG BlackBerryUI 的使用。

 

class MySVGCanvas extends Canvas

{

 

private SVGImage _image;

private ScalableGraphics _sg;

 

MySVGCanvas(SVGImage image) throws IOException

{

_image = image;

_sg = ScalableGraphics.createInstance();

}


 

 

public void paint(Graphics g)

{

if( _image  == null )

{

return;

}

 

 

// Bind target Graphics target to render to.

_sg.bindTarget(g);

Document document = _image.getDocument(); For (int i=1; i<=9;i++)

{

SVGElement menuline = (SVGElement) document.getElementById(menuline” + i);

if (i == focus)

menuline. setTrait ("visibility",visible);

else

menuline. setTrait ("visibility",hidden);

}

 

 

// Set our viewport dimensions.

_image.setViewportWidth(_canvasWidth);

_image.setViewportHeight(_canvasHeight);

// Render the svg image (model) and x/y=0/0

_sg.render(0, 0, _image);

// Release bindings on Graphics

_sg.releaseTarget();

}

 

 

public void keyPressed(int key) {

int action = getKeyAction(key);

switch (action) {

case FIRE:

Alert alert = new Alert("You select:", menuName[focus], menuImg[focus], AlertType.INFO);

alert.setTimeout(Alert.FOREVER);

break;

case UP:

focus = focus - 3;

if (focus < 0) {

focus = focus + 9;

}

break;

……

repaint();

serviceRepaints();

}

}


 

midlet 序中加入如下初始逻辑

 

private static final String SVG_URL = "/sample.svg"; SVGImage image = loadSVGImage(SVG_URL);

Canvas canvas = new MySVGCanvas(image);

 

步骤三

 

编译打,把 Java 生成相 cod 文件,下载到真或者拟器上,可以观到我 SVG

技术 base 九宫 UI 效果

 

 

 

5 基于 BlackBerry Widget UI 设计

 

对于九格的种有趣的是用 Widget 计一个纯 UI 或者有的 UI 工作都 Widget

技术,通过 Widget  或者 BB  供的用通和交互,让 Widget  台的 Java  应用行通

 

在本应中,们通 HTML 中加 SVG 式,在 Widget 应用中放入们的宫格程序 在实际用中没有必要采用这方式可以直接通过 HTML 面嵌入 IMAGE 文件方式现。

 

开发步,第:

 

Svg Adobe 倡议的 xml 基于的档规,后来也被列入 W3C 标准之中,所以 SVG 面中 件响应脚本法很多,包括的法有 SMIL Attributes 方式、JavaScript+SMIL 方式、 EventListener )根据不同的要让家有更多的选择我们里以 javascript eventlistener 方式来写我的九宫格的菜单写方

 

在我们第 4 svg 文档中,加如下本内容


 

<script>


 

 

<![CDATA[

var svgns = "http://www.w3.org/2000/svg";

function makeShape() {

var svgDoc;

var varmenuimg1 = window.document.getElementById("menuimg1");

var varmenuline;

//varmenuline.setAttributeNS(null, "visibility", "hidden");

var i = 1;

for (i=1; i<10; i++)

{

varmenuline = window.document.getElementById("menuline" + i);

varmenuline.setAttributeNS(null, "visibility", "hidden");

}

varmenuimg1.addEventListener("click", changeVisible, false);

}

function changeVisible(evt) {


 

 

 

var varmenuline1_i = window.document.getElementById("menuline4");

varmenuline1_i.setAttributeNS(null, "visibility", "visible");

}

makeShape();

]]>

</script>

由于这采用的 html 方式 svg所以我们可以 PC 浏览器中调试观这个 svg 效果 到浏览下载了 Adobe svg viewer 件后,可以用浏器直打开 svg 件进查看

看鼠标击的际效果。也可以开包这个 svg  html 文件。


 

 

 

 

上面的打开面时候的效果,后点击 menu1 的图标下面下划线会出现如下

 

 


完成这的工之后,可以对这页面行大小的适配,它满我们的真实手机大小果, 到这里 svg 的页面的开发工都已完成。

 

最后参考 widget 开发我们的 html 件转成 BlackBerry cod 文件,然根据

widget 开发提高篇,在我们的面菜的响应事件中加对具体 Java 用调用工作到这 个结合了 Widget/SVG/Java 应用的用界的算完了。

 

 

 

BlackBerry SDK下载

 

 

  • BlackBerry Java Plug-in for Eclipse v1.1
  • Java Plug-in for Eclipse Update Site
  • BlackBerry Web Plug-in v2.0
  • BlackBerry Widget SDK v1.0
  • BlackBerry Theme Studio v5.0
  • Plazmic Content Developer’s Kit v4.7
  • BlackBerry smartphone simulators
  •  

    原创粉丝点击