【发布时间】:2011-06-13 12:35:26
【问题描述】:
我正在开发一个 BlackBerry 应用程序,该应用程序在启动时需要启动画面。我还没有找到任何实现闪屏的示例。
我在应用程序的启动类中使用了一个计时器来显示启动图像。 有没有其他方法可以解决这个问题?
【问题讨论】:
标签: blackberry java-me splash-screen
我正在开发一个 BlackBerry 应用程序,该应用程序在启动时需要启动画面。我还没有找到任何实现闪屏的示例。
我在应用程序的启动类中使用了一个计时器来显示启动图像。 有没有其他方法可以解决这个问题?
【问题讨论】:
标签: blackberry java-me splash-screen
要为 BlackBerry 智能手机应用程序创建启动屏幕,必须扩展 MainScreen 类,需要使用键和导航事件,并且可以使用计时器在一定时间后关闭屏幕。
public class SplashScreen extends MainScreen {
private MainScreen next;
private UiApplication application;
private Timer timer = new Timer();
private static final Bitmap _bitmap = Bitmap.getBitmapResource("image.png");
public SplashScreen(UiApplication ui, MainScreen next) {
super(Field.USE_ALL_HEIGHT | Field.FIELD_LEFT);
this.application = ui;
this.next = next;
this.add(new BitmapField(_bitmap));
SplashScreenListener listener = new SplashScreenListener(this);
this.addKeyListener(listener);
timer.schedule(new CountDown(), 5000);
application.pushScreen(this);
}
public void dismiss() {
timer.cancel();
application.popScreen(this);
application.pushScreen(next);
}
private class CountDown extends TimerTask {
public void run() {
DismissThread dThread = new DismissThread();
application.invokeLater(dThread);
}
}
private class DismissThread implements Runnable {
public void run() {
dismiss();
}
}
protected boolean navigationClick(int status, int time) {
dismiss();
return true;
}
protected boolean navigationUnclick(int status, int time) {
return false;
}
protected boolean navigationMovement(int dx, int dy, int status, int time) {
return false;
}
public static class SplashScreenListener implements
KeyListener {
private SplashScreen screen;
public boolean keyChar(char key, int status, int time) {
//intercept the ESC and MENU key - exit the splash screen
boolean retval = false;
switch (key) {
case Characters.CONTROL_MENU:
case Characters.ESCAPE:
screen.dismiss();
retval = true;
break;
}
return retval;
}
public boolean keyDown(int keycode, int time) {
return false;
}
public boolean keyRepeat(int keycode, int time) {
return false;
}
public boolean keyStatus(int keycode, int time) {
return false;
}
public boolean keyUp(int keycode, int time) {
return false;
}
public SplashScreenListener(SplashScreen splash) {
screen = splash;
}
}
}
【讨论】: