`
xusaomaiss
  • 浏览: 608599 次
  • 性别: 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 界面

    最新开源 j2me 资源代码,如果有人可以改成在eclipse 的项目,就感激不尽

    最新LWUIT_1_5

    LWUIT哦,最新的包,学习学习。非常好用哦

    lwuit界面在eclipse下的例子

    lwuit界面在eclipse下的例子,原为netbean下的例子,现在改为eclipse下,以供eclipse下的大家共同交流。本程序仅为编程参考,希望lwuit能发展得更快些,那我们就有福了

    LWUIT.jar LWUIT.jar

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

    j2me记事本lwuit高级界面

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

    Lwuit入门程序测试一下Demo

    Lwuit入门程序测试一下Demo 里面需要用到LWUIT的jar包

    lwuit-blackberry上移植的版本

    Lwuit在blackberry上的移植版本,使用subversion签下来的,我把这个从lwuit-incubator中提取出来的,里面有DOC和源码,不过它把4.2-4.7版本放在一起了,应用的时候需要根据自己项目实际进行裁剪和修改。

    LWUIT_3_1英文原版.part1

    The Lightweight UI Toolkit (LWUIT) 是一个轻量级JavaME UI工具包。LWUIT类似Swing 的MVC架构, 支持多种布局(Layouts), 皮肤更换, 字体, 触摸屏, 动画效果, Rich控件, 3D集成, Painter, 模式对画框, I18N/L10N等...

    LWUIT最新工具包

    Lightweight UI Toolkit (LWUIT) 是一个轻量...LWUIT类似Swing 的MVC架构, 支持多种布局(Layouts), 皮肤更换, 字体, 触摸屏, 动画效果, Rich 使用LWUIT的应用程序界面 控件, 3D集成, Painter, 模式对画框, I18N/L10N

    lwuit 1.2.1lwuit 最新

    The Lightweight UI Toolkit (LWUIT) 是一个轻量级JavaME UI工具包。LWUIT类似Swing 的MVC架构, 支持多种布局(Layouts), 皮肤更换, 字体, 触摸屏, 动画效果, Rich控件, 3D集成, Painter, 模式对画框, I18N/L10N等...

    lwuit1.4介绍

    根据搜索翻译出来的lwuit1.4的介绍,有兴趣的朋友可以看看

    LWUIT的最新源代码(官方的LWUIT.jar反编译)

    在网上找了很久源代码,基本上都是缺胳膊少腿的,svn上1.3版的代码还处于测试阶段...官方的只通了LWUIT.jar和Demo的下载,没有源代码,我把这个LWUIT.jar反编译了一下,把反编译过后产生的错误修改好了,已经可以用了。

    lwuit1.4 jar包

    lwuit1.4 jar包 lwuit1.4 jar包 lwuit1.4 jar包 lwuit1.4 jar包

    LWUIT最新源代码

    Sun发布了LWUIT(Light-Weight UI Toolkit)的源代码。项目主页访问:LWUIT。 The Lightweight UI Toolkit (LWUIT) 是一个轻量级JavaME UI工具包。LWUIT类似Swing 的MVC架构, 支持多种布局(Layouts), 皮肤更换, ...

    lwuit Developer_Guide

    lwuit的开发文档 Hello World for MIDP import com.sun.lwuit.Display; import com.sun.lwuit.Form; import com.sun.lwuit.Label; import com.sun.lwuit.layouts.BorderLayout; import ...

    lwuit_demo_src.rar_DEMO_J2ME lwuit de_LWUIT_lwuit demo

    lwuit demo 的源代码,基本重要的函数都在这里进行了展示

    lwuit 1.4 api文档

    lwuit 1.4 api文档,lwuit 1.4 api文档。

    lwuit api文档下载

    lwuit api文档下载,lwuit api文档下载

Global site tag (gtag.js) - Google Analytics