아래의 스플래시 화면이 올바르게 표시되지 않습니다. 스플래시 화면을 밀 때 잘 작동하지만 스플래시 화면을 누른 다음 다른 화면을 밀면 작동하지 않습니다. 환영 화면이 스플래시 화면입니다.스플래시 화면이 작동하지 않습니다.
그래서이 작품 -
pushScreen(new WelcomeScreen());
하지만이 -
pushScreen(new WelcomeScreen());
pushScreen(new MenuScreen());
을 menuscreen이되는 SplashScreen를 바로 표시되지 않고, 두 번째 시나리오에서.
다음은 스플래시 화면 코드입니다. 두 클래스입니다.
package screens;
import com.src.driver.Driver;
import net.rim.device.api.system.Bitmap;
import net.rim.device.api.ui.component.LabelField;
public class WelcomeScreen extends SplashScreen {
public WelcomeScreen() {
super(Bitmap.getBitmapResource("icon.png"), 5);
//normal mainscreen items:
//setTitle("SplashScreen Test");
//add(new LabelField("HelloWorld!"));
}
}
package screens;
import java.util.Timer;
import java.util.TimerTask;
import com.src.driver.Driver;
import net.rim.device.api.system.Bitmap;
import net.rim.device.api.system.Display;
import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.container.MainScreen;
public class SplashScreen extends MainScreen {
Bitmap popup;
SplashScreen screen = this;
private Timer splashTimer = new Timer();
private TimerTask splashTask;
int count = 0;
int screenWidth = Display.getWidth();
int screenHeight = Display.getHeight();
int yCoord;
int xCoord;
boolean showSplash = true;
boolean splashDisplayed = false;
public SplashScreen(Bitmap popup, final int seconds) {
this.popup = popup;
xCoord = (screenWidth - popup.getWidth())/2;
yCoord = (screenHeight - popup.getHeight())/2;
splashTask = new TimerTask() {
public void run() {
if (showSplash && !splashDisplayed) {
count++;
if (count == seconds * 10) {
showSplash = false;
splashDisplayed = true;
splashTimer.cancel();
invalidate();
}
}
}
};
splashTimer.scheduleAtFixedRate(splashTask, 100, 100);
}
protected void paint(Graphics graphics) {
super.paint(graphics);
if (showSplash && !splashDisplayed) {
graphics.drawBitmap(xCoord, yCoord, popup.getWidth(), popup.getHeight(), popup, 0, 0);
//draw border, delete if not needed:
//graphics.setColor(0xcccccc);
//graphics.drawRect(xCoord, yCoord, popup.getWidth(), popup.getHeight());
}
}
protected void onUiEngineAttached(boolean attached) {
showSplash = true;
invalidate();
super.onUiEngineAttached(attached);
}
//allow user to dismiss splash screen:
protected boolean navigationMovement(int dx, int dy, int status, int time) {
return DismissSplash();
}
protected boolean navigationClick(int status, int time) {
return DismissSplash();
}
protected boolean keyChar(char c, int status, int time) {
return DismissSplash();
}
private boolean DismissSplash() {
if (showSplash) {
showSplash = false;
splashDisplayed = true;
invalidate();
return true;
}else{
return false;
}
}
}
는
당신이 추가 할 수 의사 PLZ이를 달성하기 :
이
은 다음과 같이 보일 수 있는가? –고맙습니다. 거의 다 왔을 것 같습니다. 일단 스플래시 화면이 완료되면 빈 화면이 표시됩니다. 블랙 베리 옵션 화면을 클릭하고 메뉴 화면을 닫으면 메뉴 화면이 표시됩니다. –
menuscreen을 푸시하는 코드를 실행하기 때문에 menuscreen이 화면에 푸시되지 않은 이유는 확실하지 않습니다. –