<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      J2ME中創建Splash打開界面

      [摘要]很顯然,最簡單的建立Splash啟動界面的方法是用Alert ,在應用程序啟動的時候用Alert 顯示啟動信息和圖片一段時間直到應用程序啟動完成.因此用Alert 做啟動界面是非常簡單的,具體實現方...
      很顯然,最簡單的建立Splash啟動界面的方法是用Alert ,在應用程序啟動的時候用Alert 顯示啟動信息和圖片一段時間直到應用程序啟動完成.因此用Alert 做啟動界面是非常簡單的,具體實現方法可參考如下代碼:



      public void showSplashScreen(
                           Display d, Displayable next ){
          Image logo = null;
          
          try {
            logo = Image.createImage(
                                    "/images/logo.png" );
          }
          catch( IOException e ){
          }
          
          Alert a = new Alert( "Time Tracker",
                 "Copyright 2001 by Nobody, Inc.",
                  logo, null );
          a.setTimeout( Alert.FOREVER );
          display.setCurrent( a, next );
      }




      不過使用Alert 也許不能滿足您靈活的需要,比如需要用任何按鈕取消Splash , 或者顯示一個簡單的動畫 .這個時候,我們可以用Canvas 來代替Alert .請參見如下代碼:



      import java.util.*;
      import javax.microedition.lcdui.*;

      public class SplashScreen extends Canvas {
          private Display     display;
          private Displayable next;
          private Timer       timer = new Timer();

          public SplashScreen(
                     Display display, Displayable next ){
              this.display = display;
              this.next    = next;

              display.setCurrent( this );
          }

          protected void keyPressed( int keyCode ){
              dismiss();
          }

          protected void paint( Graphics g ){
              // do your drawing here
          }

          protected void pointerPressed( int x, int y ){
              dismiss();
          }

          protected void showNotify(){
              timer.schedule( new CountDown(), 5000 );
          }

          private void dismiss(){
              timer.cancel();
              display.setCurrent( next );
          }

          private class CountDown extends TimerTask {
              public void run(){
                  dismiss();
              }
          }
      }




             為了顯示這個Splash界面,為他建立一個實例 當你建立一個SplashScreen的實例,把它傳遞給MIDlet的顯示類, 你也可以在Splash界面釋放的時候把Display激活.



      public void showSplashScreen(
                     Display display, Displayable next ){
          new SplashScreen( display, next );
      }


      這個例子,無論是用戶按下了任意鍵或者點擊了屏幕(如果設備支持觸摸屏的的化),如果什么事件也沒有發生,Splash屏幕將在第一次顯示5秒后消失.



             我們在程序中什么時候顯示Splash呢?你也許會想到在MIDlet的startApp方法的最后一行顯示Splash,但請記住,startApp方法在一次進程中有可能被調用多次,構造函數中也不是一個顯示Splash的好地方,因為MIDP的規范中沒有保證在構造的時候初始化Display 對象 .所以startApp 是可以顯示Splash的地方,不過一定要注意,只能夠顯示一次. 同時startApp中也是可以安全獲取到Display對象 , 所以結合以上兩點,見如下代碼:



      import javax.microedition.lcdui.*;
      import javax.microedition.midlet.*;

      public class MyMIDlet extends MIDlet
                            implements CommandListener {

          private Display display;
          private Command exitCommand = new Command(
                               "Exit", Command.EXIT, 1 );

          public MyMIDlet(){
          }

          protected void destroyApp(
            boolean unconditional )
                     throws MIDletStateChangeException {
              exitMIDlet();
          }

          protected void pauseApp(){
          }

          protected void startApp()
                      throws MIDletStateChangeException {
              if( display == null ){
                                  // first time called...
                  initMIDlet();
              }
          }

          private void initMIDlet(){
              display = Display.getDisplay( this );
              new SplashScreen(
                             display, new TrivialForm() );
          }

          public void exitMIDlet(){
              notifyDestroyed();
          }

          public void commandAction(
                              Command c, Displayable d ){
              exitMIDlet();
          }

          // A trivial UI screen

          class TrivialForm extends Form {
              TrivialForm(){
                  super( "MyMIDlet" );
                  addCommand( exitCommand );
                  setCommandListener( MyMIDlet.this );
              }
          }
      }




      在MIDlet程序中,并非每次客戶啟動程序都要顯示Splash , 你應該在用戶第一次啟動MIDlet的時候顯示Splash , 下次用戶再啟動的時候就不要再顯示了. 為此,你可以用記錄管理系統(RMS) 存儲程序是否已經被調用的標識, 只有當RMS中沒有該標識的時候才顯示Splash ,當顯示完Splash 后你就把標識寫入RMS,這樣就不會重復調用了.


      日韩精品一区二区三区高清