初始画面—MIDP2.0

初始画面(Splash Screen),通常一开始显示给用户一些信息(厂商信息,作者信息等),持续大概2—3秒钟。在这其间,程序可以做些初始化之类的工作。 以下是一个简单的实现(代码附后): SplashScreen(Display display, Displayable next, Image image,int dismissTime)
static void access(SplashScreen splashScreen)
private void dismiss()
protected void keyPressed(int keyCode)
protected void paint(Graphics g)
protected void pointerPressed(int x, int y)
protected void showNotify()
1.在构造函数中传入设备显示对象display,下一个要显示的画面next(初始界面通常是自动消失而进入程序主界面的。),需要显示的画面image,显示的时间dismissTime(单位为毫秒)。
2.当用户感觉显示时间太长时,可以通过按某个键或用触摸笔按一下屏幕来把初始画面取消掉。Dismiss方法负责停止计数器,并且将下一个要显示的画面设置给设备的显示对象。KeyPressed和pointerPressed响应用户操作,access是提供给计数器的接口,这三个方法均调用dismiss
3.很显然的,SplashScreen需要派生自Canvas来绘图。Paint是Canvas的方法,责任是绘制屏幕,这里的paint自然就是来绘制那个image的了。
4.ShowNotify和hideNotify是一对方法,分别在该Canvas显示前和显示后被设备调用。这是很有用的方法。在这个例子里,showNotify的责任是初始化计数器。
附:Splash Screen和计数器Counter的代码:
Source code for SplashScreen.java:
import java.util.Timer;
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 final class SplashScreen extends Canvas {
    private Display display;
    private Displayable next;
    private Timer timer;
    private Image image;
    private int dismissTime;
    public SplashScreen(Display display, Displayable next, Image image, int dismissTime) {
        super();
        timer = new Timer();
        this.display = display;
        this.next = next;
        this.image = image;
        this.dismissTime = dismissTime;
        display.setCurrent(this);
    }
    static void access(SplashScreen splashScreen) {
        splashScreen.dismiss();
    }
    private void dismiss() {
        timer.cancel();
        display.setCurrent(next);
    }
    protected void keyPressed(int keyCode) {
        dismiss();
    }
    protected void paint(Graphics g) {
        g.setColor(0x00FFFFFF);
        g.fillRect(0, 0, getWidth(), getHeight());
        g.setColor(0x00000000);
        g.drawImage(image, getWidth() / 2, getHeight() / 2 - 5, 3);
    }
    protected void pointerPressed(int x, int y) {
        dismiss();
    }
    protected void showNotify() {
        if (dismissTime > 0) timer.schedule(new CountDown(this), dismissTime);
    }
}

Source Code for CountDown.java:

import java.util.TimerTask;
class CountDown extends TimerTask {
    private final SplashScreen splashScreen;
    CountDown(SplashScreen splashScreen) {
        this.splashScreen = splashScreen;
    }
    public void run() {
        SplashScreen.access(this.splashScreen);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值