`
izuoyan
  • 浏览: 9221936 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用Timer和TimerTask实现欢迎界面

阅读更多

作者:magic003 文章来源:http://www.j2medev.com/Article/ShowArticle.asp?ArticleID=938

欢迎界面是在程序启动时用来显示产品(如logo,名称),作者,版本等信息的界面。当用户按下任意键,或经过一定时间后,欢迎界面会自动消失,进入程序的主界面。很多程序都设有欢迎界面,尤其是游戏软件。本文将介绍如何使用Timer和TimerTask来实现一个欢迎界面。
首先来看一下Timer和TimerTask这两个类。在java.util这个包中可以找到这两个类。Timer直接从Object继承,它相当于一个计时器,能够用它来指定某个时间来执行一项任务,或者每隔一定时间间隔反复执行同一个任务。创建一个Timer后,就会生成一个线程在背后运行,来控制任务的执行。而TimerTask就是用来实现某项任务的类,它实现了Runnable接口,因此相当于一个线程。更多相关的知识请参见JDK文档。
由于此程序比较简单,因此没有使用MVC模式,而对于有很多界面的程序,使用MVC模式会比较方便。程序中用来实现欢迎界面功能的只有两个类:SplashScreen.java和ShowMainScreen.java。SplashScreen的功能是显示欢迎界面,ShowMainScreen则是进入程序主界面的任务。
首先来看一下SplashScreen这个类。因为用来显示欢迎图片,所以它从Canvas继承。它的主要任务是绘制欢迎界面,同时它还初始化了一个Timer,作为定时器。其中的dismiss()方法用来取消Timer,同时显示主界面。

以下是引用片段:
publicvoiddismiss(){
timer.cancel();//取消定时器
next=newTextBox("welcome","Welcometocomehere!",40,TextField.ANY);
display.setCurrent(next);
}

在用户按下任意键后进入主界面,因此keyPressed()方法直接调用了dimiss()方法。

以下是引用片段:
protectedvoidkeyPressed(intkey){
dismiss();
}

SplashScreen的完整代码如下:
SplashScreen.java

以下是引用片段:
packagesplash.welcome.view;


importjava.io.IOException;
importjava.util.Timer;
importjavax.microedition.lcdui.Canvas;
importjavax.microedition.lcdui.Display;
importjavax.microedition.lcdui.Graphics;
importjavax.microedition.lcdui.Image;
importjavax.microedition.lcdui.TextBox;
importjavax.microedition.lcdui.TextField;


/**
*@authorAdministrator
*
*欢迎界面的类
*/
publicclassSplashScreenextendsCanvas{
privateDisplaydisplay;

/**
*程序的主界面
*/
privateTextBoxnext;

/**
*定时器,一定时间后自动跳到主界面
*/
privateTimertimer;

/**
*最长的停留时间
*/
privatefinalintMAX_TIME=3000;

privateImageimage;
privateStringfile="/res/splash.png";

/**
*完成初始化工作
*@paramdisplay
*/
publicSplashScreen(Displaydisplay){
super();
this.display=display;
timer=newTimer();
loadImage();
display.setCurrent(this);
/**
*设置定时器
*/
timer.schedule(newShowMainScreen(this),MAX_TIME);
}

/**
*取消定时器,显示下一个页面
*
*/
publicvoiddismiss(){
timer.cancel();
next=newTextBox("welcome","Welcometocomehere!",40,TextField.ANY);
display.setCurrent(next);
}

protectedvoidpaint(Graphicsg){
g.drawImage(image,0,0,Graphics.LEFT|Graphics.TOP);
}
/**
*用户按下任意键后即进入程序的主界面
*/
protectedvoidkeyPressed(intkey){
dismiss();
}
/**
*载入图像
*
*/
privatevoidloadImage(){
try{
image=Image.createImage(file);
}catch(IOExceptione){
e.printStackTrace();
}
}
}

接下来看一下完成进入主界面任务的类:ShowMainScreen。它是从TimerTask继承的。一个SplashScreen的对象作为其构造函数的参数传递进来。由于仅仅是取消定时器,显示主界面,因此在run()方法中只是简单的调用了SplashScreen的dismiss()方法。

以下是引用片段:
publicvoidrun(){
splash.dismiss();
}

ShowMainScreen的完整代码如下:
ShowMainScreen.java

以下是引用片段:
packagesplash.welcome.view;
importjava.util.TimerTask;
/**
*@authorAdministrator
*
*跳过欢迎界面,进入主界面的类
*/
publicclassShowMainScreenextendsTimerTask{
privateSplashScreensplash;

publicShowMainScreen(SplashScreensplash){
this.splash=splash;
}

publicvoidrun(){
splash.dismiss();
}
}

另外,有一个Midlet来运行这个程序:

SplashMidlet.java

以下是引用片段:
packagesplash.welcome.midlet;
importjavax.microedition.lcdui.Canvas;
importjavax.microedition.lcdui.Display;
importjavax.microedition.midlet.MIDlet;
importjavax.microedition.midlet.MIDletStateChangeException;
importsplash.welcome.view.SplashScreen;
/**
*@authorAdministrator
*
*进入程序的Midlet
*/
publicclassSplashMidletextendsMIDlet{
privateDisplaydisplay;

/**
*欢迎界面
*/
privateCanvassplash;

publicSplashMidlet(){
super();
display=Display.getDisplay(this);
}
protectedvoidstartApp()throwsMIDletStateChangeException{
splash=newSplashScreen(display);
}
protectedvoidpauseApp(){
}
protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{
}
}
分享到:
评论

相关推荐

    Timer,TimerTask 动态显示文字

    本篇将重点讲解如何利用`Timer`和`TimerTask`这两个工具来实现这样的功能,特别是针对`TextView`控件。 `Timer`类是Java.util包中的一个类,它提供了调度任务在未来某个时间点执行的能力。而`TimerTask`是`Timer`类...

    Android Timer TimerTask Handler

    在Android开发中,有时我们需要定期执行某些任务,例如更新...通过熟练掌握`Android Timer`、`TimerTask`和`Handler`的使用,开发者能够更高效地管理应用程序的定时任务,优化用户界面的响应速度,提升应用的整体性能。

    使用Canvas建立应用程序的欢迎界面

    在开发Java ME (J2ME) 应用程序时,我们常常需要创建吸引...以上就是使用Canvas建立J2ME应用程序欢迎界面的关键技术和步骤,通过巧妙结合这些技术,我们可以创建出既美观又流畅的欢迎界面,提升用户对应用的第一印象。

    用ViewPager实现手动切换,用Timer + Handler实现自动切换,左右完美无限滑动效果非常平滑_广告展示.zip

    这个项目中,开发者使用了ViewPager组件配合Timer和Handler来实现这一功能。下面我们将详细探讨这些知识点。 首先,**ViewPager**是Android SDK中的一个控件,它允许用户在多个视图之间进行水平滑动。在广告展示或...

    Timer-java.rar_java timer_timer_timer java

    在描述中提到的是一个使用图形用户界面(GUI)实现的Timer应用,允许用户设置特定的时间段,并且能够控制Timer的启动和关闭。用户还可以通过任意按键完成操作,这可能涉及到键盘监听事件的处理。 下面我们将深入...

    Timer简单程序代码

    1. **Java中的Timer**: Java的`java.util.Timer`和`java.util.TimerTask`类组合使用可以创建定时器。`Timer`用于调度任务,`TimerTask`是可重用的轻量级任务类。例如,创建一个每秒打印一行的Timer任务,可以这样...

    安卓Android源码——用ViewPager实现手动切换,用Timer+Handler实现自动切换.zip

    总之,通过合理利用ViewPager、Timer和Handler,我们可以构建出具有平滑手动切换和自动循环播放功能的界面,这在许多安卓应用中都是一个常见且实用的设计。不断实践和深入研究,你将能够更加熟练地驾驭这些工具,...

    Android-UI-TimerTask.rar_android_android timetask_android ui

    1. **Timer和TimerTask的使用**: - `Timer`类:创建一个计划任务调度器,用于安排将来在单独线程上运行的任务。 - `TimerTask`类:实现了Runnable接口,代表要由Timer调度的任务。通过重写`run()`方法定义需要...

    java 红绿灯 timer 实现线程操作

    在这个场景中,`Timer`类和`TimerTask`类通常用于定时任务,使得红绿灯状态在预设的时间间隔内自动切换。下面将详细阐述如何使用Java的`Timer`来实现红绿灯的线程操作。 首先,我们需要理解Java的`Timer`类。`java....

    用ViewPager实现手动切换,用Timer + Handler实现自动切换,左右完美无限滑动效果非常平滑.rar

    在标题“用ViewPager实现手动切换,用Timer + Handler实现自动切换,左右完美无限滑动效果非常平滑”中,我们关注的是如何利用ViewPager实现手动切换,并通过Timer和Handler来自动切换页面,同时实现平滑的无限滚动...

    timer定时器(java)

    在`main`方法中创建了`TimerTask`实例和`Timer`实例,然后使用`scheduleAtFixedRate`方法来设置定时任务。参数分别为:定时任务实例、初始延迟(0毫秒表示立即执行)、重复执行的时间间隔(3000毫秒即3秒)。 ####...

    通过progressbar监控以timer计时控制开始与结束的任务

    在Java中,我们可以使用`java.util.Timer`和`java.util.TimerTask`类来实现定时任务。`Timer`用于计划在特定时间执行的任务,而`TimerTask`是实现了Runnable接口的类,代表了一个可由`Timer`调度的任务。通过`Timer....

    java定时器timer制作

    根据给定的信息,本文将详细解析Java定时器的制作及...通过以上的分析,我们可以看出,不同编程语言中的定时器实现有着各自的特点和适用场景。开发者应根据具体的应用需求来选择合适的定时器类型,以达到最佳的效果。

    J2me Alert Timer实例源码.rar

    Timer与TimerTask类一起使用,TimerTask是一个抽象类,你需要继承并实现其run()方法,以定义在定时器触发时要执行的代码。 在这些源码实例中,开发者可能会看到以下关键知识点: 1. **创建Alert**:源码将展示如何...

    【源码】J2ME时钟源码

    3. 使用Timer和TimerTask实现定时更新。 4. Java日期和时间API的使用。 5. 可能的线程管理和同步机制。 6. 用户界面的交互和偏好设置。 深入理解这个源码,不仅可以帮助开发者掌握J2ME应用开发的基本技巧,还能...

    简单的JAVA倒计时程序

    该程序使用Java中的Timer和TimerTask类来实现倒计时计数,使用JFrame和JLabel类来显示倒计时信息。 二、倒计时程序的实现细节 倒计时程序的实现可以分为以下几个步骤: 1. 导入必要的Java类库 倒计时程序需要...

    j2me中Alert和Timer编程范例

    `Timer`的使用通常包括创建`Timer`对象,设置定时器的任务(通过实现`TimerTask`接口),然后启动定时器。下面是一个简单的示例,展示了如何每隔两秒钟更新一个显示文本: ```java class UpdateTask extends ...

    定时器的封装类,可直接并列com包使用

    在实际开发中,`Timer`和`TimerTask`通常用于执行后台操作,如数据同步、清理任务或用户界面更新。然而,由于`Timer`的线程模型可能导致任务执行顺序的不可预测性(尤其是当多个任务接近其调度时间时),所以在并发...

    android学习日记-3 Timer

    在Android开发中,`Timer`类是一个非常常用的工具,它用于调度周期性的任务执行,比如定时刷新界面、定期发送网络请求等。这篇博客"android学习日记-3 Timer"深入探讨了`Timer`类的使用方法及其背后的原理。下面将...

    android timer

    `Timer`用于创建和调度任务,而`TimerTask`则是一个抽象类,需要我们继承并实现其中的`run()`方法,以定义要定时执行的任务。 2. **创建定时器** 要创建一个定时器,首先我们需要实例化一个`Timer`对象,然后使用`...

Global site tag (gtag.js) - Google Analytics