`

BlackBerry定制自己喜爱的List Field

阅读更多

BB上面提供可继承的ListField类,我们可以直接继承此类,然后重写里面的方法,另外继承ListFieldCallBack接口,实现回调。

 

请看代码: 

 MyList.java

 

 

package com.mdev;

import net.rim.device.api.ui.ContextMenu;
import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.component.ListField;
import net.rim.device.api.ui.component.ListFieldCallback;


/**
 * 
 * @author Sinfrancis wong
 * @site: http://mdev.cc
 *
 */
public class MyList extends ListField implements ListFieldCallback {

	String[] datas = {"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20"};
	
	/**
	 * 数据总长度
	 */
	int dataSize;
	/**
	 * 每一行的高度
	 */
	int rowHeight;
	
	
	
	public MyList() {
		
		rowHeight = 40;
		dataSize = datas.length;
		/**
		 * 设置回调函数
		 */
		setCallback(this);
		/**
		 * 设置一共有多少行
		 */
		setSize(dataSize);
		/**
		 * 设置每一行高度
		 */
		setRowHeight(rowHeight);
	}
	protected void paint(Graphics graphics) {
		/**
		 * 画出背景
		 */
		graphics.setColor(0x336699);
		graphics.fillRect(0, 0, getPreferredWidth(), getPreferredHeight());
		
		graphics.setColor(0x000000);
		int i = 0;
		while( i < dataSize){
			drawListRow(this, graphics, i, i*getRowHeight(), getPreferredWidth());
			i++;
		}
	}
	
	protected void layout(int width, int height) {
		
		/**
		 * 设置整个ListField的总高度和宽度
		 */
		setExtent(getPreferredWidth(), getPreferredHeight());
	}
	public int getPreferredHeight() {
		return dataSize * rowHeight ;
	}

	public int getPreferredWidth() {
		return 360;
	}

	public void drawListRow(ListField listField, Graphics graphics, int index,
			int y, int width) {
		/**
		 * 画出文字
		 */
		graphics.drawText(datas[index], 10, y);
		
		/**
		 * 画出下划线
		 */
		graphics.drawLine(0, y+rowHeight, 360, y+rowHeight);
	}

	public Object get(ListField listField, int index) {
		return datas[index];
	}
	public int getPreferredWidth(ListField listField) {
		return getPreferredWidth();
	}

	public int indexOfList(ListField listField, String prefix, int start) {
		return 0;
	}
	
	protected void makeContextMenu(ContextMenu contextMenu) {
	}
	
}

 

 

MyScreen.java

 

 

package com.mdev;

import java.util.Vector;
import net.rim.device.api.ui.ContextMenu;
import net.rim.device.api.ui.Manager;
import net.rim.device.api.ui.component.Menu;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.container.VerticalFieldManager;


/**
 * 
 * @author Sinfrancis wong
 * @site: http://mdev.cc
 *
 */
public class MyScreen extends MainScreen {
	public MyScreen() {
		MyList m = new MyList();
	
		/**
		 * 设置VerticalFieldManager可以滚动
		 */
		VerticalFieldManager fieldManager = new VerticalFieldManager(Manager.VERTICAL_SCROLL|Manager.VERTICAL_SCROLLBAR|Manager.VERTICAL_SCROLLBAR_MASK){
			
			protected void sublayout(int maxWidth, int maxHeight) {
				super.sublayout(maxWidth, maxHeight);
				
				/**
				 * 设置Manager的大小为300*200,list里面的数据只在这个范围内滚动,如果注释掉就会显示全屏。
				 */
				setExtent(300, 200);
			}
			protected void makeContextMenu(ContextMenu contextMenu) {
			}
			
			protected void makeMenu(Menu menu, int instance) {
			}
		};
		
		
		
		/**
		 * 设置外上边距和外左边距
		 */
		//fieldManager.setPadding(50, 0, 0, 10);
		
		/**
		 * 设置内上边距和内左边距
		 */
		fieldManager.setMargin(50, 0, 0, 10);
		
		
		
		//**注意:如果设置外上边距,请将list field的总高度加上您设置的外上边距高度,
		//**比如manager外上边距为 50,那么list field的总高度也要加上50,不然无法滚动到底。
		//**设置内上边距,list field无需在加上内上边距的高度
		//**以上是在非全屏模式下的listfield
		
		fieldManager.add(m);
		add(fieldManager);
	}
	
	protected void makeContextMenu(ContextMenu contextMenu) {
	}
	
	protected void makeMenu(Menu menu, int instance) {
	}
}

 

 

MyApplication.java

 

 

package com.mdev;

import net.rim.device.api.ui.UiApplication;

/**
 * 
 * @author Sinfrancis wong
 * @site: http://mdev.cc
 *
 */
public class MyApplication extends UiApplication {
	
	public MyApplication() {
		MyScreen m = new MyScreen();
		pushScreen(m);
	}
	
	public static void main(String[] args) {
	 MyApplication myApplication = new MyApplication();
	 myApplication.enterEventDispatcher();
	 
	}
}

 

 

 

所有应该注意的地方都写在注释里面了,请看注释,截图:

 


  • 大小: 6.2 KB
分享到:
评论

相关推荐

    如何创建定制的BlackBerry UI Field

    ### 如何创建定制的BlackBerry UI Field #### 一、概述 在BlackBerry平台上,开发者可以获得许多现成的标准UI组件,这些组件简化了移动应用程序的快速构建过程。然而,在面对消费类或娱乐类应用程序时,为了吸引...

    吐血推荐:BlackBerry下定制自己的UI空间,包括Button,Field,Manager

    项目源代码,如果要编译这个项目,把编译器的版本改为1.4(最新的是1.6),在项目的Property-&gt;Java Compiler中修改。 效果参考博客: http://blog.csdn.net/BBHeipy/archive/2010/07/09/5723443.aspx

    黑莓客户端新浪微博

    "黑莓客户端新浪微博"是专门为黑莓手机用户设计的应用程序,允许他们在自己的设备上方便地访问和互动于这个庞大的社交网络。 该应用提供了以下核心功能: 1. **实时更新**:用户可以即时查看关注好友的最新动态,...

    黑莓blackberry Anyview

    黑莓blackberry阅读工具 支持格式txt

    7290 bb blackberry黑莓

    7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓7290 bb blackberry黑莓...

    老黑莓OS经典软件合集大全,独家整理,适合黑莓blackberry 7XXX 8XXX 9XXX等黑莓老机型.zip

    老黑莓OS经典软件合集大全,独家整理,适合黑莓blackberry 7XXX 8XXX 9XXX等黑莓老机型,格式为cod , alx,jad等格式;;怀旧经典,软件清单如下 Twitter70.zip WacaiBlackberry.zip [BerryCN.com_DZH_v5.18] XECurrency-...

    blackberry chinese黑莓 中文

    黑莓手机,以其独特的全键盘设计和强大的商务功能,在早期深受用户喜爱。本文将详细讲解如何在黑莓设备上设置和使用中文输入法。 1. **输入区域设置(Input Locale)** 黑莓手机支持多语言输入,包括中文。在设置...

    黑莓BlackBerry手机主题制作使用教程

    【黑莓BlackBerry手机主题制作使用教程】 在本文中,我们将深入探讨如何制作适用于BlackBerry设备的主题。首先,我们需要了解制作BlackBerry主题所需的基本软件工具,包括Java Development Environment (JDE)、...

    黑莓桌面管理器 BlackBerry Desktop Manager 5.0.1 B73多国语言版

    ### 黑莓桌面管理器 BlackBerry Desktop Manager 5.0.1 B73多国语言版 #### 一、概述 黑莓桌面管理器(BlackBerry Desktop Manager)是为黑莓设备设计的一款桌面软件,旨在帮助用户更高效地管理其黑莓手机上的数据...

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

    1. **User Interface (UI)**:使用BlackBerry特有的Manager类和Field类来构建界面,如HorizontalFieldManager、VerticalFieldManager等。 2. **事件处理**:通过Override `paint()` 和 `touchEvent()` 方法来处理...

    黑莓手机usb驱动(BlackBerry USB Driver)

    黑莓usb驱动是一款黑莓手机专用驱动,已经装了桌面管理器的电脑就不需要安装了。没有装桌面管理器,又想访问TF卡,装这个就可以了。驱动介绍相信大家在第一次使用黑莓手机连接电脑的时候都出现了没有反应的问题了,...

    新浪微博 黑莓版 可用版

    对于黑莓手机用户来说,能够在自己的设备上使用功能完善的微博应用无疑是一种享受。"BerryCN.com_Sina_WeiBo_4.5OS.zip"就是专为4.5操作系统设计的新浪微博客户端,它以其独特的魅力和实用性,深受广大黑莓用户的...

    黑莓桌面管理器4.2

    这款软件以其简洁的界面和易于操作的特点,深受黑莓用户的喜爱。在本文中,我们将深入探讨其主要功能、使用方法以及如何优化黑莓设备的管理体验。 1. **同步功能** 黑莓桌面管理器4.2的核心功能之一是数据同步。...

    黑莓全机型主题涵盖8300-9900

    在IT行业中,特别是智能手机领域,黑莓(BlackBerry)曾是一款非常流行的商务手机品牌,以其独特的全键盘设计和高效的安全系统赢得了用户喜爱。本话题主要围绕"黑莓全机型主题涵盖8300-9900",这表明我们讨论的是...

    黑莓blackberry8700g游戏软件经典集合

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

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

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

    飞信超越定制版 黑莓7130适用

    信黑莓超越输入法定制版本 1.支持发送消息直接输入中文 2.修改按键设置(第一次运行进行初始设置改为无效) 左软键改成QW(对于QWERTY全键盘机器为Q) 右软键改成OP(对于QWERTY全键盘机器为P) 展开用户树、选择用户...

    黑莓手机的文件

    在移动通信领域,黑莓手机以其独特的操作系统和高效的工作性能赢得了部分用户的喜爱。本篇将详细介绍黑莓手机的文件系统结构,以及如何管理和操作其中的文件,特别是针对提供的压缩包子文件进行解析。 【描述】:...

Global site tag (gtag.js) - Google Analytics