《J2ME移动软件程序设计 第9章 J2ME的低级用户界面设计.ppt》由会员分享,可在线阅读,更多相关《J2ME移动软件程序设计 第9章 J2ME的低级用户界面设计.ppt(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、china_ 第第9章章 J2ME的低级用户界面设计的低级用户界面设计 J2ME移动软件程序设计移动软件程序设计china_ 知识点:l低级用户界面设计概述lCanvas类l实例本章导读:本章详细介绍低级用户界面设计的基础类Canvas类。通过几个实例讲解如何处理用户输入;键盘输入和指针输入;如何编写程序启动画面;如何编写屏幕保护程序;如何编写屏幕清除程序以及在程序中如何显示和滚动图片等J2ME低级用户界面设计技术。J2ME移动软件程序设计移动软件程序设计china_ 9.1.1概述概述9.1低级用户界面设计概述低级用户界面设计概述 l低级用户界面设计可以容许MIDlet完全地访问MID的输入
2、设备和显示屏幕。l高级用户界面类似于设计普通的窗口菜单这样的界面;而低级用户界面类似于设计手机游戏那样的“不规范”的用户界面。l可以在一个MIDlet交互使用高级用户界面API和低级用户界面API,但是不能同时使用两种类型的API。J2ME移动软件程序设计移动软件程序设计china_ 9.1.2Canvas类类 l要在MIDlet中使用低级用户界面设计,就必须定义一个从Canvas类派生出来的子类。lCanvas类是一个抽象类,必须在它的基础上进行派生而不能直接定义实例。l在Canvas类的子类中必须实现paint()方法,paint()方法中传入的参数Graphics对象包含了所有的在屏幕上
3、绘画的方法,例如drawArc()、drawLine()、drawRect()和drawString()等。l在Graphics 对象中支持使用24 bits的RGB(RGB代表Red、Green和Blue,即使用红绿蓝三种基色来合成任意的颜色)颜色。J2ME移动软件程序设计移动软件程序设计china_ 9.1.3 使用使用Canvas类的例子类的例子 import javax.microedition.midlet.*;import javax.microedition.lcdui.*;public class CanvasHelloMIDlet extends MIDlet private
4、 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
5、(true);notifyDestroyed();J2ME移动软件程序设计移动软件程序设计china_ 9.1.4 程序退出的方法程序退出的方法 l两种退出程序的方法:l使用直接用户输入l使用命令事件J2ME移动软件程序设计移动软件程序设计china_ l直接用户输入包括用户按下MID的按键和移动MID的指针。l按下MID的按键使用方法:lkeyPressed()lkeyRepeatedlkeyReleased()l移动MID的指针使用方法:lpointerPressed()lpointerDragged()lpointerReleased()J2ME移动软件程序设计移动软件程序设计china
6、_ 9.2.1 绘画出屏幕背景绘画出屏幕背景 9.2 实例实例 lHappyPush是一个工人在屏幕上推箱子的动画。l背景使用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移动软件程序设计移动软件程序设计china_ 9.2.2 响应用户操作响应用户操作 l响应键盘输入 pr
7、otected void keyPressed(int keyCode);protected void keyReleased(int keyCode);protected void keyRepeated(int keyCode);l响应指针输入 protected void pointerPressed(int x,int y)protected void pointerReleased(int x,int y)protected void pointerDragged(int x,int y)J2ME移动软件程序设计移动软件程序设计china_ 9.2.3 使用使用Image类画出图像类
8、画出图像 lcreateImage()方法有三种形式l第一种形式,使用一个图像文件创建Image类。public static Image createImage(String ImageFilename);l第二种形式,使用一个已经在存储器中的Image类来创建。public static Image createImage(Image source);l第三种形式,使用从外部获得的Image数据(例如从Web服务器上读取Image文件的数据)来创建一个Image对象。public static Image createImage(byte imageData,int imageOffset
9、,int imageLength);J2ME移动软件程序设计移动软件程序设计china_ 9.2.4 响应重复按键或指针移动事件响应重复按键或指针移动事件 l使用keyRepeated()和pointerDragged()方法能让用户按下移动按键或拖动指针来进行操作,这样可以节省用户的大量按键时间。l使用hasRepeatEvents()和hasPointerMotionEvents()方法检查设备是否支持连续事件。J2ME移动软件程序设计移动软件程序设计china_ 9.3.1 使用报警的方法使用报警的方法 9.3 编写编写MIDlet的启动画面的启动画面 l实现一个启动画面的最简单方法是使
10、用报警。一个报警可以在屏幕上显示一段字符信息或者显示一个图形,直到设定的时间到达或者用户按下退出键为止。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.setCurre
11、nt(a,next);J2ME移动软件程序设计移动软件程序设计china_ 9.3.2 使用使用Canvas类绘制启动画面类绘制启动画面 l如果在启动画面中要显示图像(在报警中显示图像是可选的,即在不同厂商的MIDP实现中不一定被支持)或者用户希望按下任意一个按键就可以跳过启动画面,那么就必须使用Canvas类来自己绘制启动画面。l例:SplashScreen.javaJ2ME移动软件程序设计移动软件程序设计china_ 9.4 编写屏幕保护程序编写屏幕保护程序 l在MIDlet运行时,如果用户很长时间没有使用,就可以在屏幕上显示一个屏幕保护程序,已增加程序的趣味性。l部分代码public S
12、creenSaver()display=Display.getDisplay(this);canvas =new ScreenSaverCanvas(this);/创建一个 500 毫秒执行一次的任务 timer=new Timer();task=new LinesTimerTask(canvas);timer.schedule(task,0,500);l完整实例,ScreenSaver.javaJ2ME移动软件程序设计移动软件程序设计china_ 9.5 清除屏幕显示内容清除屏幕显示内容 l在MIDP的低级用户界面设计中,并没有提供清屏功能。l通过程序实现清屏的功能。在屏幕上画一个矩形将整个
13、屏幕遮住,同时将矩形填充为屏幕的底色。l使用Canvas类的getWidth()方法和getHeight()方法来取得Canvas的宽和高。l使用fillRect(x1,y1,x2,y2)方法在屏幕上绘制矩形,(x1,y1)和(x2,y2)两个点分别代表所绘制矩形的左上角和右下角,设置矩形的填充颜色可以使用setColor()方法。J2ME移动软件程序设计移动软件程序设计china_ l例,使用白色绘制一个屏幕大小的矩形覆盖整个屏幕。g.setColor(255,255,255);g.fillRect(0,0,getWidth(),getHeight();l完整实例,ClearDisplay.javaJ2ME移动软件程序设计移动软件程序设计china_ 9.6 图片处理的例子图片处理的例子 l图片处理是低级界面设计中的重要内容,有两种重要技术:显示Png图片和滚动显示图片。l显示网络上下载的Png图片。在很多情况下,MIDlet通常需要显示从网络上下载下来的图片,PngViewer.javal滚动显示图像。移动电话上的显示屏幕通常是不大的,如果使用Image在屏幕上显示图片时,图片的尺寸超过了屏幕的尺寸,就应该让MIDlet具有在屏幕上滚动显示图像的功能。ImageMove.java J2ME移动软件程序设计移动软件程序设计