使用Canvas制作MIDlet的欢迎界面
2004-07-28 16:34
531 查看
通常,我们发布的应用软件在程序启动的时候都会显示一个欢迎界面,也可能是一些关于软件的说明信息,这篇文章将讲述如何自己制作一个这样的欢迎界面。
我以前曾经用Alert做过环境界面,可以使用display.setCurrent(alert,next)方法。这样当alert的显示时间结束或者用户按键的话会显示出下个界面。这基本上可以满足我们的需求,但是这样的效果并不太理想,我在手机上多次测试都不好。在这里我介绍一种使用Canvas制作欢迎界面的方法,在其中会涉及到一些关于Timer和TimerTask的内容,你可以参考我在J2SE中的相关文章看如何使用这两个简单且重要的class。
我们的目的是显示一个欢迎界面给用户,当用户按下任意键或者设置的显示时间到时的话显示出下个主界面。我们创建一个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中我们希望当它被显示的时候开始计时。这样我们可以覆盖方法showNotify(),如下所示:
protected void showNotify()
{
timer.schedule(new TimerTask()
{
public void run()
{
dismiss();
}
}, displayTime);
}
这样当显示canvas的时候,系统已经开始计时了,displayTime后会显示主界面。也许用户等不了这么长时间,那么当他按键的时候也应该显示出主界面,因此我们覆盖方法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基本构造起来了,我们写一个测试的MIDlet来看看效果,MIDlet和WelcomeCanvas的代码内容如下:
备注:这个程序是在eclipse环境下运行的,因此你应该把Duke.png文件复制到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;
/*
* Created on 2004-7-28
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
/**
* @author E2412C
*
* TODO To change the template for this generated type comment go to Window -
* Preferences - Java - Code Style - Code Templates
*/
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;
/**
* @author E2412C
*
* TODO To change the template for this generated type comment go to Window -
* Preferences - Java - Code Style - Code Templates
*/
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);
}
}
我以前曾经用Alert做过环境界面,可以使用display.setCurrent(alert,next)方法。这样当alert的显示时间结束或者用户按键的话会显示出下个界面。这基本上可以满足我们的需求,但是这样的效果并不太理想,我在手机上多次测试都不好。在这里我介绍一种使用Canvas制作欢迎界面的方法,在其中会涉及到一些关于Timer和TimerTask的内容,你可以参考我在J2SE中的相关文章看如何使用这两个简单且重要的class。
我们的目的是显示一个欢迎界面给用户,当用户按下任意键或者设置的显示时间到时的话显示出下个主界面。我们创建一个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中我们希望当它被显示的时候开始计时。这样我们可以覆盖方法showNotify(),如下所示:
protected void showNotify()
{
timer.schedule(new TimerTask()
{
public void run()
{
dismiss();
}
}, displayTime);
}
这样当显示canvas的时候,系统已经开始计时了,displayTime后会显示主界面。也许用户等不了这么长时间,那么当他按键的时候也应该显示出主界面,因此我们覆盖方法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基本构造起来了,我们写一个测试的MIDlet来看看效果,MIDlet和WelcomeCanvas的代码内容如下:
备注:这个程序是在eclipse环境下运行的,因此你应该把Duke.png文件复制到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;
/*
* Created on 2004-7-28
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
/**
* @author E2412C
*
* TODO To change the template for this generated type comment go to Window -
* Preferences - Java - Code Style - Code Templates
*/
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;
/**
* @author E2412C
*
* TODO To change the template for this generated type comment go to Window -
* Preferences - Java - Code Style - Code Templates
*/
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);
}
}
相关文章推荐
- 使用Canvas制作MIDlet的欢迎界面
- 使用Canvas制作MIDlet的欢迎界面
- 如何使用图片制作全屏欢迎界面
- 使用html5 canvas和javascript制作可调整时间的时钟界面
- Delphi : 制作程序启动欢迎界面
- android欢迎界面的使用
- 用PowerPoint制作比赛评分系统,欢迎下载!比赛评分专业展示系统,使用VC++制作控制台,PPT集成技术佼佼者,全国唯一
- 【Android界面实现】使用Canvas对象实现“刮刮乐”效果
- 特殊类型窗体制作: 用C#实现启动欢迎界面
- 使用PHP制作 简易员工管理系统之三(管理员登陆界面以及数据库验证)
- 使用react-native做一个简单的应用-03欢迎界面
- Android笔记—如何制作欢迎界面
- 让python在android系统上飞一会儿:第四节 使用WebView制作程序界面
- Android之应用首次使用的欢迎界面实例
- [界面]程序启动欢迎窗体(Splash) 制作方法(附原码)
- 使用python开发android应用程序(4):使用WebView制作程序界面
- J2ME中使用Canvas制作简单的游戏菜单
- 【Android UI设计与开发】第02期:引导界面(二)使用ViewPager实现欢迎引导页面
- 【Android UI设计与开发】第02期:引导界面(二)使用ViewPager实现欢迎引导页面
- 使用Bootstrap框架制作查询页面的界面实例代码