• Thứ Tư, 14/07/2004 22:43 (GMT+7)

    Tạo màn hình chào cho ứng dụng ĐTDĐ

    Thường các ứng dụng ĐTDĐ khi khởi động có hiện màn hình chào (splash screen) hiển thị thông tin về tên và phiên bản ứng dụng, cùng với thông tin về bản quyền và thương hiệu. Dưới đây là một số cách để tạo màn hình này.

    ALERT

    Đây là cách đơn giản nhất. Alert là một thành phần trong thư viện lập trình giao diện mức cao (high-level user interface API) của MIDP 1.0, dùng để hiển thị một tin nhắn và một hình ảnh tùy chọn trong một khoảng thời gian nhất định hoặc người sử dụng có thể đóng nó bằng cách nhấn phím bất kỳ trên ĐTDĐ. Sau đây là ví dụ đơn giản với 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(

        "Mobile Games 2004",

        "Copyright 2004 by Nguyễn Việt Quang.", logo, null );

        a.setTimeout( Alert.FOREVER );

        display.setCurrent( a, next );

    }         

    CANVAS

    Nếu Alert không đáp ứng yêu cầu của bạn, ví dụ như hiển thị một hoạt cảnh nhỏ (animation). Bây giờ là lúc bạn cần sử dụng Canvas, một thành phần trong thư viện lập trình giao diện mức thấp (low-level user interface API) của MIDP 1.0. Sau đây là ví dụ đơn giản với Canvas.

    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 ){

            // các thao tác vẽ của bạn ở đây

        }

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

            }

        }

    }         

    Để hiện màn hình chào, bạn cần khởi tạo một thực thể (instance) của lớp SplashScreen và truyền 2 tham số: Tham số thứ nhất là đối tượng Display của ứng dụng trên ĐTDĐ, tham số thứ hai là màn hình sẽ được kích hoạt sau khi màn hình chào đóng lại.

    public void showSplashScreen( Display display, Displayable next ){

        new SplashScreen( display, next );

    }

    Màn hình chào sẽ được thông qua nếu người sử dụng nhấn phím bất kỳ hoặc tự động đóng lại và chuyển sang cửa sổ kế sau 5 giây đồng hồ.

    Cuối cùng, là đoạn mã thực hiện gọi màn hình chào trong ứng dụng.

                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( "Mobile Games 2004" );

                addCommand( exitCommand );

                setCommandListener( MyMIDlet.this );

            }

        }

    }         

    Nguyễn Việt Quang
    (qtheboss - www.JavaVietnam.org)

    ID: A0407_138