国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

使用Canvas制作MIDlet的歡迎界面

2019-11-18 16:09:46
字體:
供稿:網(wǎng)友
   通常,我們發(fā)布的應(yīng)用軟件在程序啟動的時候都會顯示一個歡迎界面,也可能是一些關(guān)于軟件的說明信息,這篇文章將講述如何自己制作一個這樣的歡迎界面。

   我以前曾經(jīng)用Alert做過環(huán)境界面,可以使用display.setCurrent(alert,next)方法。這樣當(dāng)alert的顯示時間結(jié)束或者用戶按鍵的話會顯示出下個界面。這基本上可以滿足我們的需求,但是這樣的效果并不太理想,我在手機上多次測試都不好。在這里我介紹一種使用Canvas制作歡迎界面的方法,在其中會涉及到一些關(guān)于Timer和TimerTask的內(nèi)容,你可以參考我在J2SE中的相關(guān)文章看如何使用這兩個簡單且重要的class。

    我們的目的是顯示一個歡迎界面給用戶,當(dāng)用戶按下任意鍵或者設(shè)置的顯示時間到時的話顯示出下個主界面。我們創(chuàng)建一個WelcomeCanvas類來繼承Canvas類在paint(Graphics g)里面提供方法來繪制我們歡迎界面的圖片。例如:
PRotected void paint(Graphics arg0)
    {
        int width = this.getWidth();
        int height = this.getHeight();
        Image displayImage = null;
        try
        {
            displayImage = Image.createImage("/Duke.png");
        } catch (IOException e)
        {
            e.printStackTrace();
        }
        arg0.drawImage(displayImage, width / 2, height / 2, Graphics.HCENTER
                Graphics.BOTTOM);

    }
在WelcomeCanvas中我們希望當(dāng)它被顯示的時候開始計時。這樣我們可以覆蓋方法showNotify(),如下所示:
    protected void showNotify()
    {
        timer.schedule(new TimerTask()
        {
            public void run()
            {
                dismiss();
            }
        }, displayTime);
    }

這樣當(dāng)顯示canvas的時候,系統(tǒng)已經(jīng)開始計時了,displayTime后會顯示主界面。也許用戶等不了這么長時間,那么當(dāng)他按鍵的時候也應(yīng)該顯示出主界面,因此我們覆蓋方法keyPressed()和pointerPressed()如下所示:
protected void keyPressed(int keyCode)
    {
        dismiss();
    }

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

    private void dismiss()
    {
        timer.cancel();
        display.setCurrent(nextUI);
    }
這樣我們的WelcomeCanvas基本構(gòu)造起來了,我們寫一個測試的MIDlet來看看效果,MIDlet和WelcomeCanvas的代碼內(nèi)容如下:


備注:這個程序是在eclipse環(huán)境下運行的,因此你應(yīng)該把Duke.png文件復(fù)制到res目錄下,否則會拋出異常。這個圖片我是在wtk的安裝目錄隨便找的。


import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class MyMIDlet extends MIDlet
{

    private Display display;
    private Form mainForm = new Form("main form");

    protected void startApp() throws MIDletStateChangeException
    {
        display = Display.getDisplay(this);
        mainForm.append("this is the main form");
        WelcomeCanvas welcome = new WelcomeCanvas(display, mainForm);
        welcome.setDisplayTime(6000);
        display.setCurrent(welcome);
    }

    protected void pauseApp()
    {

    }

    protected void destroyApp(boolean arg0) throws MIDletStateChangeException
    {

    }

}

import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;

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 class WelcomeCanvas extends Canvas
{

    private Display display;
    private Displayable nextUI;
    private Timer timer = new Timer();
    private long displayTime = 3000;

    public WelcomeCanvas(Display dis, Displayable disp) {
        this.display = dis;
        this.nextUI = disp;
    }

    protected void paint(Graphics arg0)
    {
        int width = this.getWidth();
        int height = this.getHeight();
        Image displayImage = null;
        try
        {
            displayImage = Image.createImage("/Duke.png");
        } catch (IOException e)
        {
            e.printStackTrace();
        }
        arg0.drawImage(displayImage, width / 2, height / 2, Graphics.HCENTER
                Graphics.BOTTOM);


    }

    public void setDisplayTime(long dispTime)
    {
        this.displayTime = dispTime;
    }

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

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

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

    protected void showNotify()
    {
        timer.schedule(new TimerTask()
        {
            public void run()
            {
                dismiss();
            }
        }, displayTime);
    }

}

(出處:http://www.survivalescaperooms.com)



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宝丰县| 红桥区| 绵竹市| 南投县| 施甸县| 灵宝市| 镇江市| 陵水| 仁怀市| 卢湾区| 屏东县| 买车| 克什克腾旗| 洪湖市| 景谷| 象州县| 英德市| 邵武市| 沙洋县| 惠水县| 泰来县| 洮南市| 蓬莱市| 海晏县| 新津县| 介休市| 基隆市| 马鞍山市| 车致| 商南县| 浦东新区| 鹿邑县| 保山市| 凉城县| 西峡县| 彝良县| 谢通门县| 惠水县| 卢氏县| 峡江县| 长垣县|