`
mfcai
  • 浏览: 409173 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多
欢迎界面一般可以通过以下两种方式,进入主画面
1)当用户按键,进入主画面
2)等待N秒自动进入主画面
等待n秒,这里也有两种方式:
1)让线程睡眠n秒,
2)定时器设定n秒,到n秒后去调度任务,进入主画面

技术:
1)使用Canvas制作欢迎画面
2)支持触摸屏处理
3)支持按键处理
4)定时器
5)线程

1、触摸屏事件
要让模拟器支持触摸屏,需要进行设置一下:
在WTK安装目录下,如,我的wtk安装在c盘,
路径应该是:c:\WTK22\wtklib\devices\DefaultColorPhone\DefaultColorPhone.properties
打开文件后,将touch_screen=false,改成true

MIDP2.0对于触摸屏方法有3个
1)pointerDragged(int x, int y)  触摸屏拖拽事件(暂时还没研究)
2)pointerPressed(int x, int y) 触摸屏按压
3)pointerReleased(int x, int y) 触摸屏释放
pointerPressed(int x, int y)当用户按下触摸屏的时候会自动调用这个方法x,y就是当前压下的坐标


2、按键事件
MIDP2.0对于触摸屏方法有3个:
1)keyPressed:按键按下
2)keyReleased:按键释放
3)keyRepeated:重复按键


3、定时器处理
定时器处理是指Timer与TimerTask,只有Timer 是没有用的,必须配合TimerTask 才有作用。在Timer定义了TimerTask 后,就会在指定的时间内执行TimerTask所定义的工作。
1)在Timer 的schedule()方法来设定特定时间或特定时间周期
2)在TimerTask的run()方法中定义任务
这样,在特定时间或特定时间周期,run()方法中的任务就会被执行
timer.schedule(new TimerTask() {
        public void run() {
            cancelWelcome();
        }
    }, displayTime);

   
主要代码如下,eclipse环境下调试通过:
1)定时器实现自动进入主画面
package test.mfcai;
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("/logo20k.png");
        } catch (IOException e) {
            e.printStackTrace();
        }
        arg0.drawImage(displayImage, getWidth()/2, getHeight()/2, Graphics.HCENTER|Graphics.VCENTER);
 
    }
 
    public void setDisplayTime(long dispTime) {
        this.displayTime = dispTime;
    }
 
    protected void keyPressed(int keyCode) {
     cancelWelcome();
    }
 
    protected void pointerPressed(int y, int x) {
     cancelWelcome();
    }
 
    private void cancelWelcome() {
        timer.cancel();
        display.setCurrent(nextUI);
    }
 
    protected void showNotify() {
        timer.schedule(new TimerTask() {
            public void run() {
             cancelWelcome();
            }
        }, displayTime);
    }
 
}

2)Thread方式实现自动进入主画面
package test.mfcai;
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 WelcomeCanvas2 extends Canvas implements Runnable{ 
    private Display display;
    private Displayable nextUI;
    private long displayTime = 3000;
    public WelcomeCanvas2(Display dis, Displayable disp) {
        this.display = dis;
        this.nextUI = disp;
      //启动线程
        Thread thread = new Thread(this);
        thread.start();
    }
 
    protected void paint(Graphics arg0) {
        int width = this.getWidth();
        int height = this.getHeight();
        Image displayImage = null;
        try {
            displayImage = Image.createImage("/logo20k.png");
        } catch (IOException e) {
            e.printStackTrace();
        }
        arg0.drawImage(displayImage, getWidth()/2, getHeight()/2, Graphics.HCENTER|Graphics.VCENTER);

    }
   
    public void run(){
     //等待3秒
        try{
            Thread.sleep(displayTime);
        }catch(Exception e){


        }
            //显示需要显示的界面
         display.setCurrent(nextUI);

    }
 
    public void setDisplayTime(long dispTime) {
        this.displayTime = dispTime;
    }
 
    protected void keyPressed(int keyCode) {
     cancelWelcome();
    }
 
    protected void pointerPressed(int y, int x) {
     cancelWelcome();
    }
 
    private void cancelWelcome() {
        display.setCurrent(nextUI);
    }
}




本文欢迎转载,但请注明作者和出处
分享到:
评论

相关推荐

    应用程序开发公司HTML5模板

    它不仅节省了从零开始设计网站的时间,而且提供了丰富的功能和美观的界面,帮助企业更好地展示其应用程序开发能力和服务,吸引潜在客户。通过熟练掌握和运用HTML5模板,开发者可以更高效地构建出符合现代标准的高...

    JAVA程序设计:第12章 建立GUI应用程序.ppt

    第12章“建立GUI应用程序”主要讲解如何使用Java的AWT(Abstract Window Toolkit)库来创建丰富的图形界面。AWT是Java最早提供的GUI库,它提供了一系列基础组件和事件处理机制。 首先,我们来看Component类。...

    通过WebSockets和HTML5 Canvas通过Web浏览器访问WPF应用程序

    标题中的“通过WebSockets和HTML5 Canvas通过Web浏览器访问WPF应用程序”揭示了这个话题是关于使用现代网络技术来远程展示和交互WPF(Windows Presentation Foundation)应用程序。这是一个先进的技术融合,允许...

    很漂亮的WPF程序

    这个标题和描述提及的是一个基于Windows Presentation Foundation (WPF) 技术开发的用户界面美观的应用程序。WPF是.NET框架的一部分,由微软开发,专门用于构建桌面应用程序。它的主要优势在于提供了丰富的图形层、...

    WebGL/ThreeJS Sprite、SpriteMaterial通过精灵模型和Canvas画布Demo

    这个Demo将展示如何将Three.js的3D能力与Canvas的2D绘图能力相结合,创造出富有动态性和互动性的WebGL应用程序。 在实际开发中,你可能还会遇到如何处理用户输入、优化性能、处理碰撞检测等问题。Three.js提供了...

    j2me canvas九宫图 菜单

    在IT行业中,J2ME(Java 2 Micro Edition)是一种...通过自定义Canvas和菜单,开发者可以创建出符合特定需求且用户体验良好的应用程序。在这个案例中,学习如何构建九宫图和菜单将有助于提升对J2ME图形界面编程的理解。

    vue+nodejs 将canvas发布到dlna投屏服务

    在前端,Vue.js被用来创建用户界面,它提供了一种声明式、组件化的开发方式,使得构建复杂的交互式应用变得简单。在这个项目中,Vue.js可能用于创建一个界面,用户可以通过该界面触发视频流的捕获和投屏操作。同时,...

    delphi仿QQ2011界面

    Delphi是一款强大的Windows应用程序开发工具,以其高效的编译器和直观的可视化界面设计而受到广大程序员的青睐。本篇文章将深入探讨如何使用Delphi来仿制QQ2011的经典界面,通过这个项目,我们可以学习到Delphi界面...

    Microsoft PowerApps canvas说明文档

    为了确保企业开发者能够构建出一致、高效且易于维护的应用程序,本文档——"Microsoft PowerApps canvas说明文档"——提供了一套详细的编码标准和指南。 **目的** 这份技术白皮书旨在为微软PowerApps的企业制作者...

    软件界面设计工具_3款合集

    当您需要绘制一款应用程序的外观或显示怎样将程序的各个部分连接起来时,您就可以使用GUI Design Studio来实现,如: 将产品创意文档化 制作项目提案 需求记录 创建屏幕图样 为开发人员制作详细的规格 为现有...

    Java移动通信程序设计(J2ME MIDP)范例

    Java移动通信程序设计(J2ME MIDP)范例主要涵盖了使用Java Micro Edition (J2ME)平台中的Mobile Information Device Profile (MIDP)进行应用程序开发的相关技术。J2ME是Java在嵌入式设备和移动设备上的应用版本,而...

    J2ME程序设计实例教程

    2. **用户界面**:J2ME使用Canvas和Form组件构建用户界面,Canvas提供了自定义绘图的能力,而Form则用于展示文本和选择项。 3. **数据存储**:MIDP提供了Record Management System (RMS)来存储应用数据,类似于小型...

    【微信小程序-毕设期末大作业】你画我猜微信小程序源码.zip

    微信小程序是腾讯公司推出的一种轻量级的应用开发框架,可以在微信内无需下载安装即可使用的应用。开发者需要掌握WXML(微信小程序标记语言)和WXSS(微信小程序样式语言)以及JavaScript来编写小程序。 2. 小程序...

    J2ME移动设备程序设计源程序及素材

    例如,可能会找到用于创建图形用户界面(UI)的Canvas类实例,使用LWUIT(Lightweight User Interface Toolkit)或者MIDP的Form组件。同时,网络通信可能涉及了HttpConnection和Socket接口,用于发送HTTP请求或建立...

    wpf实例小程序

    **WPF(Windows Presentation Foundation)**是微软推出的一种基于.NET Framework的用户界面框架,它为开发者提供了丰富的图形表现能力和强大的数据绑定机制,用于构建桌面应用程序。这个“wpf实例小程序”集合是专...

    利用WPF建立自适应窗口大小布局的WinForm窗口[参照].pdf

    WPF(Windows Presentation Foundation)是一种基于 XML 的用户界面框架,用于构建 Windows 应用程序的用户界面。WinForm 是一种传统的 Windows 窗口应用程序开发技术。利用 WPF 建立自适应窗口大小布局的 WinForm ...

    J2ME移动设备程序设计源程序

    MIDlets运行在MIDP环境中,通过Display类来显示用户界面,使用Canvas类创建自定义图形,使用Form类创建表单界面,还可以利用Notification和Alert类来向用户发送通知。 **网络编程** J2ME提供了丰富的网络API,包括...

    Canvas.hs:使用浏览器和 HTML5 画布技术,通过事件驱动的 IO 和 GUI 为您的 Haskell 应用程序提供支持。 在引擎盖下 canvas.hs 将启动一个轻量级的 HTTP 服务器并打开一个 websocket。 该库使用 kinetic.js 和 jQuery 在画布上绘制并拦截输入事件

    开发基于 Canvas.hs 的应用程序时,开发者需要注意以下关键点: 1. **事件处理**:Canvas.hs 提供的事件驱动模型使开发者可以定义各种用户交互事件,如鼠标点击、拖动等,这些事件会在浏览器中触发,并通过 ...

Global site tag (gtag.js) - Google Analytics