应用Canvas建立应用程序的欢迎界面
使用Canvas建立应用程序的欢迎界面
欢迎界面一般可以通过以下两种方式,进入主画面
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)定时器实现自动进入主画面
2)Thread方式实现自动进入主画面
本文欢迎转载,但请注明作者和出处
欢迎界面一般可以通过以下两种方式,进入主画面
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); } }
本文欢迎转载,但请注明作者和出处