读书人

应用Canvas建立应用程序的欢迎界面

发布时间: 2012-08-26 16:48:06 作者: rapoo

使用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)定时器实现自动进入主画面

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);    }}




本文欢迎转载,但请注明作者和出处

读书人网 >移动开发

热点推荐