资源预览内容
第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
第9页 / 共17页
第10页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第9章 J2ME的低级用户界面设计,J2ME移动软件程序设计,知识点: 低级用户界面设计概述 Canvas类 实例 本章导读: 本章详细介绍低级用户界面设计的基础类Canvas类。通过几个实例讲解如何处理用户输入;键盘输入和指针输入;如何编写程序启动画面;如何编写屏幕保护程序;如何编写屏幕清除程序以及在程序中如何显示和滚动图片等J2ME低级用户界面设计技术。,J2ME移动软件程序设计,9.1.1概述,9.1低级用户界面设计概述,低级用户界面设计可以容许MIDlet完全地访问MID的输入设备和显示屏幕。 高级用户界面类似于设计普通的窗口菜单这样的界面;而低级用户界面类似于设计手机游戏那样的“不规范”的用户界面。 可以在一个MIDlet交互使用高级用户界面API和低级用户界面API,但是不能同时使用两种类型的API。,J2ME移动软件程序设计,9.1.2Canvas类,要在MIDlet中使用低级用户界面设计,就必须定义一个从Canvas类派生出来的子类。 Canvas类是一个抽象类,必须在它的基础上进行派生而不能直接定义实例。 在Canvas类的子类中必须实现paint()方法,paint()方法中传入的参数Graphics对象包含了所有的在屏幕上绘画的方法,例如drawArc()、drawLine()、drawRect()和drawString()等。 在Graphics 对象中支持使用24 bits的RGB(RGB代表Red、Green和Blue,即使用红绿蓝三种基色来合成任意的颜色)颜色。,J2ME移动软件程序设计,9.1.3 使用Canvas类的例子,import javax.microedition.midlet.*;import javax.microedition.lcdui.*; public class CanvasHelloMIDlet extends MIDlet private Display display; private MyCanvas canvas; public CanvasHelloMIDlet () display = Display.getDisplay( this ); canvas = new MyCanvas( this ); / 生成画布 protected void startApp() display.setCurrent( canvas ); / 显示画布 protected void pauseApp() protected void destroyApp( boolean unconditional ) public void exit() destroyApp( true ); notifyDestroyed(); ,J2ME移动软件程序设计,9.1.4 程序退出的方法,两种退出程序的方法: 使用直接用户输入 使用命令事件,J2ME移动软件程序设计,直接用户输入包括用户按下MID的按键和移动MID的指针。 按下MID的按键使用方法: keyPressed() keyRepeated keyReleased() 移动MID的指针使用方法: pointerPressed() pointerDragged() pointerReleased(),J2ME移动软件程序设计,9.2.1 绘画出屏幕背景,9.2 实例,HappyPush是一个工人在屏幕上推箱子的动画。 背景使用Canvas类绘制,在实现Canvas类时,必须实现Canvas类中的抽象方法void paint(Graphics g)。 protected void paint(Graphics g) / 从上一个位置到新位置画一条线 g.drawLine(m_prevX, m_prevY, m_x, m_y); / 用新位置取代旧位置 m_prevX = m_x; m_prevY = m_y; ,J2ME移动软件程序设计,9.2.2 响应用户操作,响应键盘输入 protected void keyPressed(int keyCode); protected void keyReleased(int keyCode); protected void keyRepeated(int keyCode); 响应指针输入 protected void pointerPressed(int x, int y) protected void pointerReleased(int x, int y) protected void pointerDragged(int x, int y),J2ME移动软件程序设计,9.2.3 使用Image类画出图像,createImage()方法有三种形式 第一种形式,使用一个图像文件创建Image类。 public static Image createImage(String ImageFilename); 第二种形式,使用一个已经在存储器中的Image类来创建。 public static Image createImage(Image source); 第三种形式,使用从外部获得的Image数据(例如从Web服务器上读取Image文件的数据)来创建一个Image对象。 public static Image createImage(byte imageData, int imageOffset, int imageLength);,J2ME移动软件程序设计,9.2.4 响应重复按键或指针移动事件,使用keyRepeated()和pointerDragged()方法能让用户按下移动按键或拖动指针来进行操作,这样可以节省用户的大量按键时间。 使用hasRepeatEvents()和hasPointerMotionEvents()方法检查设备是否支持连续事件。,J2ME移动软件程序设计,9.3.1 使用报警的方法,9.3 编写MIDlet的启动画面,实现一个启动画面的最简单方法是使用报警。一个报警可以在屏幕上显示一段字符信息或者显示一个图形,直到设定的时间到达或者用户按下退出键为止。,public void ShowSplashScreen(Display d, Displayable next ) Image logo = null; try logo = Image.createImage(“logo.png“ ); catch( IOException e ) Alert a = new Alert( “Time Tracker“, “Copyright 2002 by Deartony, UESTC“,logo, null ); a.setTimeout( Alert.FOREVER ); display.setCurrent( a, next ); ,J2ME移动软件程序设计,9.3.2 使用Canvas类绘制启动画面,如果在启动画面中要显示图像(在报警中显示图像是可选的,即在不同厂商的MIDP实现中不一定被支持)或者用户希望按下任意一个按键就可以跳过启动画面,那么就必须使用Canvas类来自己绘制启动画面。 例:SplashScreen.java,J2ME移动软件程序设计,9.4 编写屏幕保护程序,在MIDlet运行时,如果用户很长时间没有使用,就可以在屏幕上显示一个屏幕保护程序,已增加程序的趣味性。 部分代码 public ScreenSaver() display = Display.getDisplay(this); canvas = new ScreenSaverCanvas(this); / 创建一个 500 毫秒执行一次的任务 timer = new Timer(); task = new LinesTimerTask(canvas); timer.schedule(task, 0, 500); 完整实例,ScreenSaver .java,J2ME移动软件程序设计,9.5 清除屏幕显示内容,在MIDP的低级用户界面设计中,并没有提供清屏功能。 通过程序实现清屏的功能。在屏幕上画一个矩形将整个屏幕遮住,同时将矩形填充为屏幕的底色。 使用Canvas类的getWidth()方法和getHeight()方法来取得Canvas的宽和高。 使用fillRect(x1, y1, x2, y2)方法在屏幕上绘制矩形,(x1,y1)和(x2,y2)两个点分别代表所绘制矩形的左上角和右下角,设置矩形的填充颜色可以使用setColor()方法。,J2ME移动软件程序设计,例,使用白色绘制一个屏幕大小的矩形覆盖整个屏幕。 g.setColor(255, 255, 255); g.fillRect(0, 0, getWidth(), getHeight(); 完整实例,ClearDisplay .java,J2ME移动软件程序设计,9.6 图片处理的例子,图片处理是低级界面设计中的重要内容,有两种重要技术:显示Png图片和滚动显示图片。 显示网络上下载的Png图片。在很多情况下,MIDlet通常需要显示从网络上下载下来的图片,PngViewer .java 滚动显示图像。移动电话上的显示屏幕通常是不大的,如果使用Image在屏幕上显示图片时,图片的尺寸超过了屏幕的尺寸,就应该让MIDlet具有在屏幕上滚动显示图像的功能。 ImageMove .java,J2ME移动软件程序设计,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号