浏览 4340 次
锁定老帖子 主题:使用Canvas建立应用程序的欢迎界面
精华帖 (0) :: 良好帖 (0) :: 新手帖 (3) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-04-17
1)当用户按键,进入主画面 2)等待N秒自动进入主画面 等待n秒,这里也有两种方式: 1)让线程睡眠n秒, 2)定时器设定n秒,到n秒后去调度任务,进入主画面 技术: 1)使用Canvas制作欢迎画面 2)支持触摸屏处理 3)支持按键处理 4)定时器 5)线程 1、触摸屏事件 要让模拟器支持触摸屏,需要进行设置一下: 在WTK安装目录下,如,我的wtk安装在c盘, 路径应该是:c:\WTK22\wtklib\devices\DefaultColorPhone\DefaultColorPhone.properties 打开文件后,将touch_screen=false,改成true MIDP2.0对于触摸屏方法有3个 1)pointerDragged(int x, int y) 触摸屏拖拽事件(暂时还没研究) 2)pointerPressed(int x, int y) 触摸屏按压 3)pointerReleased(int x, int y) 触摸屏释放 pointerPressed(int x, int y)当用户按下触摸屏的时候会自动调用这个方法x,y就是当前压下的坐标 2、按键事件 MIDP2.0对于触摸屏方法有3个: 1)keyPressed:按键按下 2)keyReleased:按键释放 3)keyRepeated:重复按键 3、定时器处理 定时器处理是指Timer与TimerTask,只有Timer 是没有用的,必须配合TimerTask 才有作用。在Timer定义了TimerTask 后,就会在指定的时间内执行TimerTask所定义的工作。 1)在Timer 的schedule()方法来设定特定时间或特定时间周期 2)在TimerTask的run()方法中定义任务 这样,在特定时间或特定时间周期,run()方法中的任务就会被执行 timer.schedule(new TimerTask() { public void run() { cancelWelcome(); } }, displayTime); 主要代码如下,eclipse环境下调试通过: 1)定时器实现自动进入主画面 package test.mfcai; import java.io.IOException; import java.util.Timer; import java.util.TimerTask; import javax.microedition.lcdui.Canvas; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Graphics; import javax.microedition.lcdui.Image; public class WelcomeCanvas extends Canvas { private Display display; private Displayable nextUI; private Timer timer = new Timer(); private long displayTime = 3000; public WelcomeCanvas(Display dis, Displayable disp) { this.display = dis; this.nextUI = disp; } protected void paint(Graphics arg0) { int width = this.getWidth(); int height = this.getHeight(); Image displayImage = null; try { displayImage = Image.createImage("/logo20k.png"); } catch (IOException e) { e.printStackTrace(); } arg0.drawImage(displayImage, getWidth()/2, getHeight()/2, Graphics.HCENTER|Graphics.VCENTER); } public void setDisplayTime(long dispTime) { this.displayTime = dispTime; } protected void keyPressed(int keyCode) { cancelWelcome(); } protected void pointerPressed(int y, int x) { cancelWelcome(); } private void cancelWelcome() { timer.cancel(); display.setCurrent(nextUI); } protected void showNotify() { timer.schedule(new TimerTask() { public void run() { cancelWelcome(); } }, displayTime); } } 2)Thread方式实现自动进入主画面 package test.mfcai; import java.io.IOException; import java.util.Timer; import java.util.TimerTask; import javax.microedition.lcdui.Canvas; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Graphics; import javax.microedition.lcdui.Image; public class WelcomeCanvas2 extends Canvas implements Runnable{ private Display display; private Displayable nextUI; private long displayTime = 3000; public WelcomeCanvas2(Display dis, Displayable disp) { this.display = dis; this.nextUI = disp; //启动线程 Thread thread = new Thread(this); thread.start(); } protected void paint(Graphics arg0) { int width = this.getWidth(); int height = this.getHeight(); Image displayImage = null; try { displayImage = Image.createImage("/logo20k.png"); } catch (IOException e) { e.printStackTrace(); } arg0.drawImage(displayImage, getWidth()/2, getHeight()/2, Graphics.HCENTER|Graphics.VCENTER); } public void run(){ //等待3秒 try{ Thread.sleep(displayTime); }catch(Exception e){ } //显示需要显示的界面 display.setCurrent(nextUI); } public void setDisplayTime(long dispTime) { this.displayTime = dispTime; } protected void keyPressed(int keyCode) { cancelWelcome(); } protected void pointerPressed(int y, int x) { cancelWelcome(); } private void cancelWelcome() { display.setCurrent(nextUI); } } 本文欢迎转载,但请注明作者和出处 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |