`
xusaomaiss
  • 浏览: 615508 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

LWUIT显示漂亮的loading界面的两种方法

    博客分类:
  • java
阅读更多

强烈推荐此blog作者的博客

 

原文出处:http://blog.csdn.net/pjw100/archive/2009/11/23/4854740.aspx

 

 

我们加载某一个Form页面时,如果这个页面内容较多,加载需要一定的时间,那我们就希望做一个等待的画面,比如"某某正在加载,请等 待...",在这个画面中以动态效果来说为最好,用户也知道需要等待很短的时间。我做等待界面有两种方法:

首先是方法一,这种方法属于文字等待,就是在界面上画一串文字,"..."是以动态的形式显示,代码如下:


  1. /*  
  2.  * To change this template, choose Tools | Templates  
  3.  * and open the template in the editor.  
  4.  */   
  5. package  com.thinkrace.icredit;  
  6. import  com.sun.lwuit.Font;  
  7. import  com.sun.lwuit.Form;  
  8. import  com.sun.lwuit.Graphics;  
  9. import  com.sun.lwuit.Image;  
  10. import  com.sun.lwuit.Label;  
  11. import  com.sun.lwuit.layouts.BorderLayout;  
  12. import  java.io.IOException;  
  13. import  java.util.Random;  
  14. import  java.util.Timer;  
  15. import  java.util.TimerTask;  
  16. /**  
  17.  *  
  18.  * @author Administrator  
  19.  */   
  20. public   class  SplashForm  extends  Form  implements  Runnable {  
  21.     private  Timer timer =  new  Timer();  
  22.     private   long  displayTime =  1000 ;  
  23.     private  StringBuffer loading =  new  StringBuffer( "Saleslion is loading" );  
  24.     public  SplashForm() {  
  25.         Thread t = new  Thread( this );  
  26.         t.start();  
  27.         this .setLayout( new  BorderLayout());         
  28.         this .show();  
  29.     }  
  30.     public   void  paint(Graphics g) {  
  31.         try  {  
  32.             Image wait = Image.createImage("/logo.png" );  
  33.             //绘制logo   
  34.             g.drawImage(wait, (getWidth() - wait.getWidth()) / 2 , (getHeight() - wait.getHeight()-  70 ) /  2 );  
  35.             g.setColor(0xffffff );  
  36.             Font fnt = Font.createSystemFont(Font.FACE_PROPORTIONAL, Font.STYLE_PLAIN, Font.SIZE_LARGE);  
  37.             g.setFont(fnt);  
  38.             int  wordWidth = fnt.stringWidth( "Saleslion is loading..." );  
  39.             //绘制等待字符串   
  40.             g.drawString(loading.toString(), (getWidth() - wordWidth) / 2 , (getHeight() + wait.getHeight() - 60 ) /  2 );  
  41.         } catch  (IOException ex) {  
  42.             ex.printStackTrace();  
  43.         }  
  44.     }  
  45.     private   void  disappear() {  
  46.         timer.cancel();  
  47.         try  {  
  48.             new  LoginForm();  
  49.         } catch  (IOException ex) {  
  50.             ex.printStackTrace();  
  51.         }  
  52.     }  
  53.     //调用TimerTask,时间到了后,调用 disappear(),当前画面消失,跳至另一个Form   
  54.     protected   void  showNotify() {  
  55.         timer.schedule(new  TimerTask() {  
  56.             public   void  run() {  
  57.                 disappear();  
  58.             }  
  59.         }, displayTime);  
  60.     }  
  61.     //设置字符串   
  62.     public   void  setLoading() {  
  63.         if  (loading.toString().indexOf( "..." ) >  0 ) {  
  64.             loading.delete(loading.length() - 3 , loading.length());  
  65.         }  
  66.     }  
  67.     public   void  run() {  
  68.         while  ( true ) {  
  69.             try  {  
  70.                 //调用线程来绘制字符串   
  71.                 Thread.sleep(500 );  
  72.                 setLoading();  
  73.                 loading.append("." );  
  74.             } catch  (Exception e) {  
  75.             }  
  76.             repaint();  
  77.         }  
  78.     }  
  79. }  

以上代码比较简单,也不做多的解释,它是基于Form的。

但是这并不是我想要的效果,假如在一个九宫格中,我点击某一格时,我希望出现一个loading画面显示正在加载这一项,但是以遮罩的形式显示(就 像web开发里面弹出的遮罩层对话框一样),也就是说,弹出loading时,我仍然能够见到原来的九宫格画面。我要的效果如下图:

如果要实现这种形式的loading画面,只有通过Dialog类来实现。

制作这种Dialog有几个小问题需要解决:

1.lwuit中如何显示gif动画

2.Dialog全透明

3.Dialog自动释放

一直没有实现这个效果,关键是问题1,但是在上一节 我已经解决了,下面就看关键代码,代码仍然很简单:


  1. /*  
  2.  * To change this template, choose Tools | Templates  
  3.  * and open the template in the editor.  
  4.  */   
  5. package  com.thinkrace.UCHome.ui;  
  6. import  com.sun.lwuit.Dialog;  
  7. import  com.sun.lwuit.Display;  
  8. import  com.sun.lwuit.Image;  
  9. import  com.sun.lwuit.Label;  
  10. import  com.sun.lwuit.util.Resources;  
  11. import  java.io.IOException;  
  12. /**  
  13.  *  
  14.  * @author Administrator  
  15.  */   
  16. public   class  LoadingDialog  extends  Dialog {  
  17.     public  LoadingDialog() {  
  18.         try  {  
  19.             //设置对话框全透明   
  20.             for  ( int  i =  0 ; i < getComponentCount(); i++) {  
  21.                 getComponentAt(i).getStyle().setBgTransparency(0 );  
  22.             }  
  23.             Image icon = Resources.open("/resources.res" ).getImage( "loading.gif" );  
  24.             Label l = new  Label(icon);  
  25.             l.getStyle().setBgTransparency(0 );  
  26.             addComponent(l);  
  27.             int  w = Display.getInstance().getDisplayWidth();  
  28.             int  h = Display.getInstance().getDisplayHeight();  
  29.             int  top = (h - icon.getHeight()) /  2  -  10 ;  
  30.             int  left = (w - icon.getWidth()) /  2  -  10 ;  
  31.               
  32.             setTimeout(3000 );  
  33.             show(top,top,left,left,false );  
  34.               
  35.         } catch  (IOException ex) {  
  36.             ex.printStackTrace();  
  37.         }  
  38.     }  

分享到:
评论

相关推荐

    lwuit实例 lwuit j2me 界面

    在LWUIT中,可以使用布局管理器来安排组件的位置,9宫格布局是一种常见的界面设计,常用于展示图片、按钮或其他交互元素的网格。 知识点详解: 1. **LWUIT组件**:LWUIT提供了丰富的UI组件,如按钮、文本框、标签...

    最新LWUIT_1_5

    LWUIT( Lightweight UI Toolkit )是Java ME(J2ME)平台上的一种用户界面库,专为移动设备设计,提供了一种轻量级、高性能的界面构建工具。它旨在简化和美化在移动设备上的应用程序开发,使开发者能够创建具有丰富...

    lwuit界面在eclipse下的例子

    LWUIT( Lightweight UI Toolkit)是Java ME平台上用于构建用户界面的一个开源库,它提供了丰富的组件和动画效果,使得在移动设备上创建美观且交互性强的界面变得可能。Eclipse是一款广泛使用的集成开发环境(IDE)...

    Lwuit入门程序测试一下Demo

    **LWUIT(Lightweight User Interface Toolkit)**是Java ME平台上的一个开源用户界面库,主要用于创建具有丰富图形效果和交互性的移动应用。这个库在早期的Java ME开发中非常流行,因为它允许开发者构建出与桌面...

    LWUIT.jar LWUIT.jar

    LWUIT.jarLWUIT.jarLWUIT.jarLWUIT.jarLWUIT.jarLWUIT.jar

    lwuit 开发文档

    由于文档部分是通过OCR扫描的,可能存在识别错误或遗漏,但根据上下文可以理解为开发者在创建LWUIT主题商店时需要设计用户友好的界面,并通过网络请求从服务器获取主题数据,然后以一种直观和易用的方式展示给用户,...

    lwuit_demo_src.rar_DEMO_J2ME lwuit de_LWUIT_lwuit demo

    这个"lwuit_demo_src.rar_DEMO_J2ME lwuit de_LWUIT_lwuit demo"压缩包包含的是LWUIT库的示例源代码,对于学习和理解LWUIT的使用方法非常有帮助。 LWUIT的主要目标是提供一套轻量级的UI组件,使得开发者能够在资源...

    LWUIT

    LWUIT( Lightweight UI Toolkit)是Java ME(J2ME)平台上的一款强大的用户界面(UI)框架,专门针对移动设备的资源限制而设计。LWUIT 提供了丰富的组件和可定制的外观,使得开发者能够创建出具有吸引力、功能丰富...

    lwuit.rar_J2ME lwuit_LWUIT_j2me_j2me LWU_九宫

    LWUIT( Lightweight UI Toolkit )是Java ME(J2ME)平台上的一种用户界面库,专为移动设备设计,用于创建美观且交互性强的图形用户界面。标题中的"lwuit.rar_J2ME lwuit_LWUIT_j2me_j2me LWU_九宫"表明这是一个与...

    Hello LWUIT——LWUIT开发指南1

    本文主要探讨的是LWUIT( Lightweight User Interface Toolkit )的开发技术,LWUIT是Java ME平台上的一款轻量级用户界面库,用于创建美观、功能丰富的移动应用程序。LWUIT提供了一套丰富的组件和样式机制,使得...

    LWUIT1.3code.rar_LWUIT

    了解它的属性和方法,有助于理解LWUIT的基本操作。 - **Layout管理器**:LWUIT提供了一些布局管理器,如FlowLayout、BoxLayout和GridBagLayout等,它们负责组件在容器中的排列和对齐。 - **Form类**:作为LWUIT中...

    j2me记事本lwuit高级界面

    本项目为j2me实现的记事本程序,包括新建 保存 读取 修改 等功能,内建lwuit类库,实现了aero效果。(本项目创建平台为NetBeans6.8)

    LWUIT j2me UI例子

    **标签“LWUIT j2me UI例子 制作漂亮的UI例子”** 强调了LWUIT在J2ME平台上的应用以及创建美观界面的重要性。这些标签可能关联着一个项目或教程,旨在帮助开发者学习和掌握LWUIT的UI设计技巧。 在**压缩包子文件的...

    lwuit1.4介绍

    LWUIT 1.4 是一个轻量级用户界面工具包(Lightweight User Interface Toolkit),专为Java ME(J2ME)平台设计,用于构建功能丰富的移动应用程序。这个版本的LWUIT引入了一个名为HTMLComponent的新组件,极大地扩展...

    LWUIT做的九宫格界面需要用到ResourceEdit.exe

    LWUIT( Lightweight UI Toolkit )是Java ME平台上的一个开源UI框架,它提供了一种高效、可定制的用户界面组件库,使得开发者能够在移动设备上创建丰富的图形用户界面。在描述中提到的"九宫格界面"是一种常见的UI...

    Lwuit精简解说下载

    LWUIT( Lightweight UI Toolkit)是Java ME平台上用于构建用户界面的一个开源库,它提供了丰富的UI组件和动画效果,使得开发者能够创建出具有吸引力且功能强大的移动应用。J2ME,全称Java 2 Micro Edition,是Java...

    lwuit最新源代码

    在LWUIT中,表格(Table)和树形视图(Tree)是两种重要的UI组件,它们在数据展示和交互中起到关键作用。 1. 表格(Table)组件: 表格组件允许开发者以行和列的形式展示数据,常用于显示结构化的信息。在LWUIT中...

    LWUIT,j2me教程

    在Java ME环境中,除了LWUIT之外,开发者还有其他几种选择来构建用户界面: 1. **LCDUI(Limited Capability Display User Interface)**:这是Java ME自带的基本用户界面库,虽然功能较为简单,但对于简单的应用...

Global site tag (gtag.js) - Google Analytics