`
hongyang321
  • 浏览: 49328 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

黑莓开发第二篇:经典九宫格设计

阅读更多


 做J2ME开发一般都会遇到九宫格问题,现将我最近写的一小段例子分享一下。

 

MainUIScreen :负责九宫格布局的

/**
 * 
 */
package com.blackberry.ui;

import net.rim.device.api.system.Bitmap;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.FieldChangeListener;
import net.rim.device.api.ui.component.Dialog;
import net.rim.device.api.ui.container.FlowFieldManager;
import net.rim.device.api.ui.container.MainScreen;

import com.blackberry.ui.component.BitmapLabelField;
import com.blackberry.ui.container.ForegroundManager;

/**
 * @author zhqguo
 * @date 2011-4-29
 * @version 1.0
 * 
 */
public class MainUIScreen extends MainScreen {
	private ForegroundManager _foreground;
	private FlowFieldManager _manager;

	public MainUIScreen() {
		super(NO_VERTICAL_SCROLL | USE_ALL_HEIGHT | USE_ALL_WIDTH);
		setTitle("黑莓九宫格设计");
		_foreground = new ForegroundManager();
		_manager = new FlowFieldManager();
		BitmapLabelField bf1 = new BitmapLabelField("测试模块", Bitmap
				.getBitmapResource("png-0015.png"));
		bf1.setChangeListener(new FieldChangeListener() {
			public void fieldChanged(Field field, int context) {
				Dialog.alert("Hello");
			}
		});
		BitmapLabelField bf2 = new BitmapLabelField("测试模块", Bitmap
				.getBitmapResource("png-0015.png"));
		bf2.setChangeListener(new FieldChangeListener() {
			public void fieldChanged(Field field, int context) {
				Dialog.alert("Hello");
			}
		});
		BitmapLabelField bf3 = new BitmapLabelField("测试模块", Bitmap
				.getBitmapResource("png-0015.png"));
		BitmapLabelField bf4 = new BitmapLabelField("测试模块", Bitmap
				.getBitmapResource("png-0015.png"));
		BitmapLabelField bf5 = new BitmapLabelField("测试模块", Bitmap
				.getBitmapResource("png-0015.png"));
		BitmapLabelField bf6 = new BitmapLabelField("测试模块", Bitmap
				.getBitmapResource("png-0015.png"));
		BitmapLabelField bf7 = new BitmapLabelField("测试模块", Bitmap
				.getBitmapResource("png-0015.png"));
		BitmapLabelField bf8 = new BitmapLabelField("测试模块", Bitmap
				.getBitmapResource("png-0015.png"));
		BitmapLabelField bf9 = new BitmapLabelField("测试模块", Bitmap
				.getBitmapResource("png-0015.png"));
		setMargin(bf1);
		setMargin(bf2);
		setMargin(bf3);
		setMargin(bf4);
		setMargin(bf5);
		setMargin(bf6);
		setMargin(bf7);
		setMargin(bf8);
		setMargin(bf9);

		_manager.add(bf1);
		_manager.add(bf2);
		_manager.add(bf3);
		_manager.add(bf4);
		_manager.add(bf5);
		_manager.add(bf6);
		_manager.add(bf7);
		_manager.add(bf8);
		_manager.add(bf9);
		_foreground.add(_manager);
		add(_foreground);
	}

	/**
	 * 设置图标显示位置
	 * 
	 * @param bf
	 */
	private void setMargin(BitmapLabelField bf) {
		bf.setMargin(10, 60, 10, 60);
	}
}

 

BitmapLabelField :设置图标和文字显示样式 

 

package com.blackberry.ui.component;

import net.rim.device.api.system.Bitmap;
import net.rim.device.api.system.Characters;
import net.rim.device.api.ui.Color;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.Font;
import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.XYRect;

/**
 * 
 * @author zhqguo
 * @date 2011-4-28
 * @version 1.0
 * 
 */
public class BitmapLabelField extends Field {
	private String _title;
	private Bitmap _bitmap;

	public BitmapLabelField(String title, Bitmap bitmap) {
		this(title, bitmap, 0);
	}

	public BitmapLabelField(String title, Bitmap bitmap, long style) {
		super(Field.FOCUSABLE | style);
		_title = title;
		_bitmap = bitmap;
	}

	/**
	 * 设置显示区域大小
	 */
	protected void layout(int width, int height) {
		setExtent(80, 90);
	}

	/**
	 * 设置图标显示位置
	 */
	protected void paint(Graphics g) {
		g.drawBitmap(8, 0, _bitmap.getWidth(), _bitmap.getHeight(), _bitmap, 0,
				0);
		g.setFont(g.getFont().derive(Font.BOLD, 21));
		g.drawText(_title, 0, _bitmap.getHeight() + 4, g.HCENTER);
	}

	/**
	 * 设置域选中时的样式
	 */
	protected void drawFocus(Graphics g, boolean on) {
		g.setDrawingStyle(Graphics.DRAWSTYLE_FOCUS, true);
		paintBackground(g);
		paint(g);
	}

	/**
	 * 设置域的背景
	 */
	protected void paintBackground(Graphics g) {
		if (!isFocus()) {
			super.paintBackground(g);
			return;
		}
		int oldColour = g.getColor();

		try {
			XYRect rt = getExtent();
			XYRect rect = new XYRect(0, 0, rt.width, rt.height);
			SfBackgroundFactory.createLinearGradientRoundBackground(Color.BLUE,
					Color.BLUE, Color.LIGHTSKYBLUE, Color.LIGHTSKYBLUE, 20, 20)
					.draw(g, rect);
		} finally {
			g.setColor(oldColour);
		}
	}

	protected boolean keyChar(char character, int status, int time) {
		if (character == Characters.ENTER) {
			clickButton();
			return true;
		}
		return super.keyChar(character, status, time);
	}

	protected boolean navigationClick(int status, int time) {
		clickButton();
		return true;
	}

	protected boolean trackwheelClick(int status, int time) {
		clickButton();
		return true;
	}

	protected boolean invokeAction(int action) {
		switch (action) {
		case ACTION_INVOKE: {
			clickButton();
			return true;
		}
		}
		return super.invokeAction(action);
	}

	public void setDirty(boolean dirty) {
		// We never want to be dirty or muddy
	}

	public void setMuddy(boolean muddy) {
		// We never want to be dirty or muddy
	}

	/**
	 * A public way to click this button
	 */
	public void clickButton() {
		fieldChangeNotify(0);
	}
}

 

 

最终显示效果如下:

 


原文链接:http://52123.iteye.com/blog/1025343
分享到:
评论

相关推荐

    九宫格黑莓键盘锁

    九宫格的设计灵感来自于经典的数字谜题游戏,其逻辑性和趣味性的结合,使得用户每次解锁都有一种新鲜感,增强了操作的趣味性。同时,由于解锁路径的多样性和独特性,它还能够提升手机的安全性,保护用户隐私不受侵犯...

    Blackberry九宫格 新手入门

    Blackberry九宫格设计是一种经典的用户界面布局方式,尤其在早期的Blackberry手机上非常常见。这个设计模式将主屏幕划分为九个等大小的格子,每个格子代表一个应用或者功能入口,使得用户能够快速、直观地访问常用...

    BlackBerry JDE4.5初级篇开发向导

    ### BlackBerry JDE4.5初级篇开发向导 #### 理解BlackBerry并为BlackBerry设备编程 BlackBerry 设备提供了一种基于 J2ME 的无线应用环境,支持客户端和服务器端应用程序的开发。开发者可以创建具有复杂数据输入...

    黑莓blackberry第三方输入法:百度输入法

    2.在第三方程序中 (1)进入选项->屏幕/键盘设置任一快捷键到百度记事本(BaiduNotepad)。 (2)在需要输入处按下上一步设置好的快捷键。 (3)输入完中文后退出,在需要的地方粘贴即可。 三.目前的版本支持以下...

    黑莓开发期刊2007

    3. **最佳实践和设计模式**:期刊可能包含黑莓应用开发的最佳实践和设计模式,帮助开发者提高代码质量和可维护性,同时提高应用性能和用户体验。 4. **案例研究与实战经验**:通过分享成功的应用案例,开发者可以...

    BlackBerry 开发指南

    BlackBerry 开发指南是针对那些想要为BlackBerry设备创建应用程序的开发者的重要参考资料。这份指南分为两卷,分别涵盖了基础和高级部分,旨在帮助开发者从入门到精通,掌握在BlackBerry平台上进行软件开发的关键...

    BlackBerry(黑莓)开发入门教程最新版

    **BlackBerry(黑莓)开发入门教程最新版** 在移动应用开发领域,BlackBerry(黑莓)曾经占据一席之地,尤其在商务用户中颇受欢迎。尽管近年来市场份额有所下降,但仍有开发者对其平台感兴趣,尤其是对于历史项目...

    黑莓 开发 文档 整合

    2.黑莓MIDlet开发指南 [文档说明]BlackBerry MIDlet Development Guide V4.0 介绍如何使用黑莓JDE开发用于黑莓手机的标准MIDlet程序。 文档名:BlackBerry_MIDlet_Developer_Guide.pdf 3.黑莓桌面类API参考 ...

    blackberry游戏开发经典教程

    ### BlackBerry游戏开发经典教程知识点概览 #### 一、书籍基本信息 - **书名**:《BlackBerry游戏开发》 - **作者**:Carol Hamer 和 Andrew Davison - **出版年份**:2010年 - **ISBN**: - 纸质版:978-1-4302-...

    黑莓开发期刊2006

    《黑莓开发期刊2006》是一份专注于黑莓平台开发的专业出版物,由黑莓官方发布,每年发行两期。这份期刊旨在为开发者提供最新的技术资讯、开发技巧和实践经验,帮助他们更好地利用黑莓操作系统(BlackBerry OS)进行...

    黑莓官方开发期刊2004

    2. **黑莓API**:期刊中可能详细介绍了如何利用BlackBerry Java API进行开发,包括BBM(BlackBerry Messenger)集成、推送服务(Push Service)、设备管理、网络通信、UI设计等方面的接口和类库。 3. **开发工具**...

    BlackBerry开发平台及入门介绍

    ### BlackBerry开发平台及入门知识点详解 #### BlackBerry开发平台概述 BlackBerry开发平台是RIM(Research In Motion)推出的一套全面且高效的移动开发环境,它主要用于构建针对BlackBerry设备的应用程序和服务。...

    黑莓开发文档_i 开发

    黑莓,由加拿大RIM公司(现称为BlackBerry Limited)开发,是一款专为商务人士设计的智能手机,以其强大的电子邮件、日程管理和安全功能而闻名。"黑莓开发文档_i 开发"是一个面向初学者的资源集合,旨在帮助开发者...

    黑莓开发期刊2006-2

    这份期刊聚焦于2006年第二期的内容,提供了当时黑莓智能手机应用开发的最新资讯、技术指南和最佳实践。以下是基于这个主题的详细知识点解析: 1. 黑莓平台概述:黑莓是加拿大RIM公司(Research In Motion)推出的一...

    黑莓开发期刊2008

    2008年的期刊包含了该年度的第一期,即BlackBerryDeveloperJournal_V05_I01_Aug_2008.pdf,该文件可能详细介绍了当年8月份的黑莓开发趋势和技术重点。 在这一期期刊中,开发者可以期待学习到以下关键知识点: 1. *...

    黑莓blackberry8700g游戏软件经典集合

    黑莓Blackberry 8700g是一款经典的智能手机,它在2006年推出,以其独特的全键盘和优秀的电子邮件功能赢得了商务人士的青睐。这款手机不仅在通信和办公方面表现出色,还拥有一定的娱乐功能,包括游戏和各种实用软件。...

    黑莓开发学习入门系列,自己动手实现一个日历软件源码

    2. **用户界面(UI)设计**:BlackBerry UI设计遵循一定的设计原则和组件,如`Manager`和`Field`类。开发者可能使用了`HorizontalFieldManager`、`VerticalFieldManager`、`DateField`等控件来构建日历视图。 3. **...

    黑莓 SDK 介绍,帮助希望从事黑莓开发的朋友

    #### 二、Java应用程序开发 Java开发是黑莓平台中最受欢迎的方式之一。为了方便开发者使用Java进行开发,黑莓提供了专门的插件——**BlackBerry Java Plug-in for Eclipse v1.1**。该插件支持Eclipse集成开发环境,...

    黑莓手机开发官方教程

    《黑莓手机开发官方教程》是一份详尽的资源,旨在帮助开发者深入了解并熟练掌握黑莓手机的应用程序开发。这份教程出自黑莓官方,确保了信息的权威性和准确性,覆盖了从基础到高级的全方位知识。 教程的第一部分可能...

Global site tag (gtag.js) - Google Analytics