专注于Blackberry

每周一技:HyperLinkField

这是每周一技的第二篇了。 前一篇介绍了从BES读取contacts的技术以及遇到相关问题的解决方案(via 每周一技:从BES服务器上lookup联系人)。 本篇将介绍如何编写自定义的超级链接控件。 背景 在很多情况下,我们都会遇见超级连接的显示,遗憾的是在Blackberry没有提供类似于HyperLinkField的组件,这给我们增加了很多麻烦,如果能够解决该问题,将会是一个不错的选择。 分析 既然Blackberry API没有,我们自己可以写一个该Field,在这里,我们将之命名为HyperLinkField,以符合Blackberry API命名的规则。 实现 先看几张效果图: 图1,当focus在其他field时HyperLinkField的样式. 图2 当光标移到该field上时,颜色会变蓝,当然你也可以更改颜色。 图3,当点击该Field时, 图4,其菜单如下 该Get Page就会打开连接。 在编写代码需要注意一下几个地方: 参数的设置 Layout的处理 如何paint 菜单的处理 点击该field如何处理 下面给出部分重要的代码。 package com.taigoo.blackberry.weekskills.hyperlink; import net.rim.device.api.ui.Color; import net.rim.device.api.ui.DrawStyle; import net.rim.device.api.ui.Field; import net.rim.device.api.ui.MenuItem; import net.rim.device.api.ui.ContextMenu; import net.rim.device.api.ui.Font; import net.rim.device.api.ui.Graphics; import net.rim.device.api.ui.XYRect; import net.rim.device.api.system.Display; import net.rim.blackberry.api.browser.*; public class HyperLinkField extends Field { private [...]

继续阅读本文 →

Taigoo发表于 July 14, 2009 7:35 pm | 留言 |每周一技 

BlackBerry 应用程序开发者指南 第二卷:高级–第5章 BlackBerry浏览器

5                第5章 BlackBerry浏览器 浏览器API 在浏览器显示Web内容 在一个浏览器域里显示Web内容 支持附加的MIME类型 注册一个HTTP过滤器 浏览器API API名和包 描述 浏览器应用程序API(net.rim.blackberry.api.browser) 通过调用Blackberry浏览器,API允许应用程序显示web内容,包括支持的图片格式,HTML以及WML页面.也允许应用程序提供HTTP请求的一个Referrer,HTTP头,以及提交的内容.为获得更多信息,参看51页的”在浏览器显示Web内容”. 浏览器域API (net.rim.blackberry.api.browser.field) 此API允许一个应用程序获取web内容在一个浏览器域里的显示,此域包含在应用程序UI里.也允许应用程序配置浏览器域的表现形式,例如去除滚动条,或者指定仅显示屏幕一部分的浏览器域. 浏览器页面API(net.rim.blackberry.api.browser.plugin) 此API允许应用程序支持附加的MIME类型.当BlackBerry启动时,注册一个提交提供者,所有后发的浏览器对话将支持附加的MIME类型.为获取更多信息,参看66页的”支持附加的MIME类型”. HTTP过滤器API (net.rim.device.api.io.http) API允许应用程序向浏览器注册一个或多个URL的提供者.为获取更多信息,参看71页的”注册一个HTTP过滤器”. 在浏览器里显示Web内容 为了在浏览器里显示web内容,使用浏览器应用程序API(net.rim.blackberry.api.browser). 获取一个浏览器对话(Session) 为了获取一个缺省的BrowserSession对象,调用静态方法Browser.getDefaultSession().本对象允许你访问正在BlackBerry设备上运行的浏览器. 为了新增一个约会,调用EventList.importEvent(). 注:获取缺省的对话会覆写任何BlackBerry设备上已经打开的对话. 为获取一个不同的对话,调用getSession().此方法根据它的唯一ID(UID)获取一个浏览器配置服务记录.为获得更多信息,参见113页的”服务定制API”. 请求一个Web页面 为请求一个Web页面,调用BrowserSession.displayPage()方法.下面的实例使用了仅接受一个URL的displayPage()方法.为指定一个referrer,HTTP头,以及提交的数据,使用接受这些附加信息的方法. 代码实例 下面来自Restaurants.java实例的引用创建了一个菜单,此菜单会在浏览器中显示一个Web页面. private MenuItem browserItem = new MenuItem(        _resources.getString(MENUITEM_BROWSER), 110, 12) {     public void run() {        synchronized(store) {            String websiteUrl [...]

继续阅读本文 →

Taigoo发表于 April 28, 2008 12:28 pm | 留言 |新闻