`

J2ME GUI实战之三 ----------LWUIT实现切换特效

阅读更多
本文来自:http://blog.csdn.net/hellogv/ ,转载必须注明出处!


以上第一幅图是窗体切换特效之一;第二幅图是控件切换特效之一

以下给出设置特效的代码,这些代码同样来自Sample例子中:
  1. /*
  2. *Copyright?2008SunMicrosystems,Inc.Allrightsreserved.
  3. *Useissubjecttolicenseterms.
  4. *
  5. */
  6. packagecom.sun.lwuit.uidemo;
  7. importcom.sun.lwuit.Button;
  8. importcom.sun.lwuit.ButtonGroup;
  9. importcom.sun.lwuit.CheckBox;
  10. importcom.sun.lwuit.Command;
  11. importcom.sun.lwuit.Component;
  12. importcom.sun.lwuit.Container;
  13. importcom.sun.lwuit.Dialog;
  14. importcom.sun.lwuit.Display;
  15. importcom.sun.lwuit.Form;
  16. importcom.sun.lwuit.Label;
  17. importcom.sun.lwuit.M3G;
  18. importcom.sun.lwuit.RadioButton;
  19. importcom.sun.lwuit.TextArea;
  20. importcom.sun.lwuit.TextField;
  21. importcom.sun.lwuit.animations.CommonTransitions;
  22. importcom.sun.lwuit.animations.Transition;
  23. importcom.sun.lwuit.animations.Transition3D;
  24. importcom.sun.lwuit.events.ActionEvent;
  25. importcom.sun.lwuit.events.ActionListener;
  26. importcom.sun.lwuit.layouts.BoxLayout;
  27. importcom.sun.lwuit.layouts.FlowLayout;
  28. importcom.sun.lwuit.plaf.Style;
  29. /**
  30. *Transitonsbetweenscreens
  31. *
  32. *@authorShaiAlmog
  33. */
  34. publicclassTransitionDemoextendsDemo{
  35. /**
  36. *Theselectedradiobuttonindex
  37. */
  38. privatestaticintselectedIndex=0;
  39. publicStringgetName(){
  40. return"Transitions";
  41. }
  42. protectedStringgetHelp(){
  43. return"Transitionsappearwhenswitchingfromoneformtothenext,atransitioncanbebound"+
  44. "totheoperationofexitingorenteringthescreen.Therearedefaulttransitionsinthetoolkit"+
  45. "andcustomtransitionsareeasytowrite.";
  46. }
  47. privateRadioButtoncreateRB(Stringlabel,ButtonGroupg,Formf){
  48. RadioButtonb=newRadioButton(label);
  49. Styles=b.getStyle();
  50. s.setMargin(0,0,0,0);
  51. s.setBgTransparency(70);
  52. g.add(b);
  53. f.addComponent(b);
  54. returnb;
  55. }
  56. protectedvoidexecute(finalFormf){
  57. f.setLayout(newBoxLayout(BoxLayout.Y_AXIS));
  58. Labeltitle=newLabel("Pleaseselectatransitiontype:");
  59. title.getStyle().setMargin(0,0,0,0);
  60. title.getStyle().setBgTransparency(70);
  61. f.addComponent(title);
  62. finalButtonGroupradioButtonGroup=newButtonGroup();
  63. createRB("SlideHorizontal",radioButtonGroup,f);
  64. createRB("SlideVertical",radioButtonGroup,f);
  65. createRB("Fade",radioButtonGroup,f);
  66. if(M3G.isM3GSupported()){
  67. createRB("Rotate",radioButtonGroup,f);
  68. createRB("FlyIn",radioButtonGroup,f);
  69. createRB("Cube",radioButtonGroup,f);
  70. createRB("StaticRotation",radioButtonGroup,f);
  71. createRB("SwingTop",radioButtonGroup,f);
  72. createRB("SwingBottom",radioButtonGroup,f);
  73. }
  74. radioButtonGroup.setSelected(selectedIndex);
  75. finalTextFieldspeed=newTextField("500");
  76. speed.setConstraint(TextArea.NUMERIC);
  77. speed.setInputModeOrder(newString[]{"123"});
  78. f.addComponent(createPair("Speed",speed));
  79. finalFormdestination=newForm("Destination");
  80. destination.addComponent(newLabel("Thisisthetransitiondestination..."));
  81. destination.addCommand(newCommand("Back"){
  82. publicvoidactionPerformed(ActionEventevt){
  83. f.show();
  84. }
  85. });
  86. finalCheckBoxhighQuality=newCheckBox("HighQuality");
  87. highQuality.setSelected(!Display.getInstance().isLightMode());
  88. highQuality.getStyle().setBgTransparency(0);
  89. f.addComponent(highQuality);
  90. highQuality.addActionListener(newActionListener(){
  91. publicvoidactionPerformed(ActionEventevt){
  92. if(Display.getInstance().isLightMode()){
  93. Dialog.show("Warning","Thedeviceseemsabitweakforhighqualityrendering,"+
  94. "usingthismodemightcrashyourdevice.","OK",null);
  95. }
  96. }
  97. });
  98. finalButtonupdateButton=newButton("PreviewTransition");
  99. finalButtonapplyButton=newButton("ApplyTransition");
  100. finalButtonapplyMenu=newButton("ApplyToMenu");
  101. finalButtonapplyComponents=newButton("ApplyToComponents");
  102. updateButton.setAlignment(Button.CENTER);
  103. updateButton.getStyle().setPadding(5,5,7,7);
  104. applyButton.setAlignment(Button.CENTER);
  105. applyButton.getStyle().setPadding(5,5,7,7);
  106. ActionListenerlistener=newActionListener(){
  107. publicvoidactionPerformed(ActionEventev){
  108. intrunSpeed=Integer.parseInt(speed.getText());
  109. Transitionin,out;//in表示窗体切入时使用的特效,out表示窗体切出时使用的特性
  110. switch(radioButtonGroup.getSelectedIndex()){
  111. case0:{
  112. out=CommonTransitions.createSlide(CommonTransitions.SLIDE_HORIZONTAL,false,runSpeed);
  113. in=CommonTransitions.createSlide(CommonTransitions.SLIDE_HORIZONTAL,true,runSpeed);
  114. break;
  115. }
  116. case1:{
  117. out=CommonTransitions.createSlide(CommonTransitions.SLIDE_VERTICAL,false,runSpeed);
  118. in=CommonTransitions.createSlide(CommonTransitions.SLIDE_VERTICAL,true,runSpeed);
  119. break;
  120. }
  121. case2:{
  122. out=CommonTransitions.createFade(runSpeed);
  123. in=CommonTransitions.createFade(runSpeed);
  124. break;
  125. }
  126. case3:{
  127. out=Transition3D.createRotation(runSpeed,true);
  128. in=Transition3D.createRotation(runSpeed,false);
  129. break;
  130. }
  131. case4:{
  132. out=Transition3D.createFlyIn(runSpeed);
  133. in=Transition3D.createFlyIn(runSpeed);
  134. break;
  135. }
  136. case5:{
  137. out=Transition3D.createCube(runSpeed,true);
  138. in=Transition3D.createCube(runSpeed,false);
  139. break;
  140. }
  141. case6:{
  142. out=Transition3D.createStaticRotation(runSpeed,true);
  143. in=Transition3D.createStaticRotation(runSpeed,false);
  144. break;
  145. }
  146. case7:{
  147. out=Transition3D.createSwingIn(runSpeed);
  148. in=out;
  149. break;
  150. }
  151. default:{
  152. out=Transition3D.createSwingIn(runSpeed,false);
  153. in=out;
  154. break;
  155. }
  156. }
  157. selectedIndex=radioButtonGroup.getSelectedIndex();
  158. if(outinstanceofTransition3D){//这里需要设置特效效果,仅对部分特效有效
  159. ((Transition3D)out).setHighQualityMode(highQuality.isSelected());
  160. ((Transition3D)in).setHighQualityMode(highQuality.isSelected());
  161. }
  162. if(updateButton==ev.getSource()){
  163. //演示窗体切换特效
  164. f.setTransitionOutAnimator(out);
  165. f.setTransitionInAnimator(in);
  166. destination.show();
  167. }
  168. elseif(applyButton==ev.getSource()){
  169. //设置全部窗体在切换时都是同一个特效,注意是“窗体切换时”
  170. f.setTransitionOutAnimator(null);
  171. f.setTransitionInAnimator(null);
  172. UIDemoMIDlet.setTransition(in,out);
  173. }
  174. /*这个函数是UIDemoMIDlet的成员函数
  175. *publicstaticvoidsetTransition(Transitionin,Transitionout){
  176. form.setTransitionInAnimator(in);
  177. form.setTransitionOutAnimator(out);
  178. }
  179. */
  180. elseif(applyMenu==ev.getSource()){
  181. //设置全部菜单都是同一个特效,菜单Menu就是一般在右下角弹出的
  182. UIDemoMIDlet.setMenuTransition(in,out);
  183. }
  184. /*这个函数是UIDemoMIDlet的成员函数
  185. *publicstaticvoidsetMenuTransition(Transitionin,Transitionout){
  186. form.setMenuTransitions(in,out);
  187. UIManager.getInstance().getLookAndFeel().setDefaultMenuTransitionIn(in);
  188. UIManager.getInstance().getLookAndFeel().setDefaultMenuTransitionOut(out);
  189. }
  190. */
  191. elseif(applyComponents==ev.getSource()){
  192. //设置控件都是同一个特效,这里的控件可以是Button
  193. //当Button被选中时就会显示特效
  194. UIDemoMIDlet.setComponentTransition(in);
  195. }
  196. /*这个函数是UIDemoMIDlet的成员函数
  197. *publicstaticvoidsetComponentTransition(Transitiont){
  198. componentTransitions=t;
  199. form.setSmoothScrolling(false);
  200. }
  201. */
  202. }
  203. };
  204. updateButton.addActionListener(listener);
  205. applyButton.addActionListener(listener);
  206. applyMenu.addActionListener(listener);
  207. applyComponents.addActionListener(listener);
  208. ContainerbuttonPanel=newContainer(newFlowLayout(Component.CENTER));
  209. buttonPanel.addComponent(updateButton);
  210. f.addComponent(buttonPanel);
  211. buttonPanel=newContainer(newFlowLayout(Component.CENTER));
  212. buttonPanel.addComponent(applyButton);
  213. f.addComponent(buttonPanel);
  214. buttonPanel=newContainer(newFlowLayout(Component.CENTER));
  215. buttonPanel.addComponent(applyMenu);
  216. f.addComponent(buttonPanel);
  217. buttonPanel=newContainer(newFlowLayout(Component.CENTER));
  218. buttonPanel.addComponent(applyComponents);
  219. f.addComponent(buttonPanel);
  220. }
  221. }


分享到:
评论

相关推荐

    j2me----api

    j2me----api j2me----api j2me----api j2me----api j2me----api j2me----api j2me----api j2me----api j2me----api j2me----api

    J2ME手机游戏实例之--俄罗斯方块

    《J2ME手机游戏实例之--俄罗斯方块》 Java Micro Edition(J2ME)是Java平台的一个子集,主要用于嵌入式设备和移动设备,如早期的智能手机。本实例将探讨如何使用J2ME开发经典游戏——俄罗斯方块。在手机上实现这个...

    J2ME游戏源码---泡泡堂

    【J2ME游戏源码---泡泡堂】是一个适合初学者和有一定基础的开发者研究的游戏项目,主要用于学习J2ME(Java Micro Edition)平台上的游戏开发技术。J2ME是Java平台的一个子集,专为资源有限的移动设备如手机、PDA等...

    JAVA游戏编程之三----j2me 手机游戏入门开发--俄罗斯方块_4_增加消除行声音

    在“JAVA游戏编程之三----j2me 手机游戏入门开发--俄罗斯方块_4_增加消除行声音”这个主题中,我们将学习如何在已有的游戏基础上加入消除行时的声音反馈,让游戏体验更加生动有趣。 首先,了解基本的J2ME编程是必要...

    J2ME_Loader-1.7.7-open-release.apk

    J2ME_Loader-1.7.7-open-release.apk

    J2ME游戏源码---bubble breaker

    **J2ME游戏开发概述** Java 2 Micro Edition(J2ME)是Java平台...通过研究这个游戏的源码,开发者可以深入理解J2ME的图形绘制、用户交互、游戏逻辑实现以及资源管理等多个方面,对于提升J2ME游戏开发技能非常有帮助。

    J2me AES 加密解密 crypto-aes

    终于找到了一个能在J2ME 上面用的了 J2me AES 加密解密 crypto-aes

    j2me_wireless_toolkit-2_2-windows

    j2me_wireless_toolkit-2_2-windows 由于附件不能超过10M,只好分两部分发了

    j2me扫雷----适合初学者

    3. **用户界面**:J2ME提供了轻量级用户界面(LWUIT)或基本的用户界面组件,如Canvas。在这个扫雷游戏中,可能使用了Canvas来绘制游戏界面,实现鼠标点击和触摸屏事件的处理。 4. **逻辑控制**:扫雷游戏的逻辑...

    JAVA游戏编程之三----j2me 手机游戏入门开发--俄罗斯方块_3_增加成绩记录

    作者:雷神 QQ:38929568 QQ群:28048051JAVA游戏编程(满) 28047782(满) 50761834(忙) 31572546(新) 手机游戏开发职业群51871468(,非从事手机开发者勿进!欢迎测试策划美工程序) <br>声明:本人...

    J2ME_Loader-1.5.6-open-release.apk

    安卓手机上的j2me模拟器 可导入本地jar文件 可模拟Java手机(比如塞班)用的软件 可以体验以前的手机操作

    j2me聊天室开发--群聊

    【标题】"j2me聊天室开发--群聊"涉及的是使用Java 2 Micro Edition (J2ME)技术创建一个支持多用户群聊功能的移动应用。J2ME是Java平台的一个子集,主要用于嵌入式设备和移动设备,如手机和平板电脑。这个项目的...

    J2ME重装机兵学习--附原代码和发部文件

    《J2ME重装机兵学习--附原代码和发部文件》是一个关于移动设备上游戏开发的学习资源,特别关注于使用Java 2 Micro Edition (J2ME)平台开发名为“重装机兵”的游戏。J2ME是Java平台的一个子集,主要用于嵌入式系统和...

    j2me休闲小游戏--飞机

    3. **代码借鉴**: 作为初学者的项目,这个游戏可能包含了一些简单的实现逻辑,比如游戏循环、碰撞检测、动画处理等,对于学习J2ME游戏开发的人来说,这些代码片段可能是有价值的。 【标签】:“midlet” 【标签】...

    J2ME手机游戏开发--五子棋

    在移动设备技术发展初期,J2ME(Java 2 Micro Edition)是用于开发移动应用程序,尤其是手机游戏的主流平台之一。本项目是一个基于J2ME技术实现的五子棋游戏,展现了开发者对Java编程语言和移动游戏开发的基本理解。...

    J2ME编程----2种方法

    标题中的“J2ME编程——2种方法”指的是...这个J2ME程序实例展示了如何利用基本的GUI组件创建用户交互,并根据用户的选择动态更新UI。这对于理解和实践J2ME编程,尤其是涉及用户界面和事件处理的部分,是非常有价值的。

    基于J2ME的Java游戏--坦克大战的开发

    1. **图形用户界面(GUI)设计**:J2ME使用MIDP提供的Canvas类来绘制游戏画面。Canvas允许自定义绘图操作,可以创建游戏的背景、坦克、子弹和其他游戏元素。通过重写draw()方法,开发者可以实现游戏画面的实时更新。...

    j2me手机游戏实例之--俄罗斯方块

    本实例将深入探讨如何使用J2ME来实现经典游戏——俄罗斯方块。这个项目适合初学者学习,因为它的代码量少,逻辑清晰,易于理解。 1. **J2ME基础** J2ME是Java平台的一个子集,主要设计用于嵌入式系统,包括手机、...

    J2me 轻量级UI控件-lwuit1.2.1

    总的来说,LWUIT 1.2.1为J2ME开发者提供了一个强大且富有表现力的UI框架,虽然其大小可能不适合所有设备,但通过合理的优化和利用,可以在许多移动应用中实现令人满意的用户体验。对于那些寻求超越MIDP标准UI限制的...

Global site tag (gtag.js) - Google Analytics