java – 如何创建类似于Blackberry App World的黑莓屏幕幻灯片动画?

前端之家收集整理的这篇文章主要介绍了java – 如何创建类似于Blackberry App World的黑莓屏幕幻灯片动画?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

有没有人知道如何使用黑莓JDE API创建类似于黑莓应用程序世界中的特色项目屏幕的屏幕幻灯片动画?我知道在黑莓5.0中,有一些过渡api来执行它.但我希望在4.6版操作系统上做到这一点.它使用黑莓粗体滚动球具有很好的滚动效果.

谢谢.

最佳答案
作为截图/位图方法的替代方案……

在屏幕的绘制方法中,您可以使用Graphics.pushContext(..)来推送剪切区域和绘制偏移.为了获得最佳结果,您需要在runnable中进行转换,并在事件锁定上进行同步.这将确保您的屏幕可以在转换过程中被解除.

粗略的例子:

  1. class TransitionScreen extends Screen {
  2. private int transitionOffset;
  3. private boolean isTransitionHorizontal;
  4. private ScreenTransition currentTransition;
  5. public TransitionScreen(boolean isTransitionHorizontal) {
  6. this.isTransitionHorizontal = isTransitionHorizontal;
  7. transitionOffset = getTransitionMaximum(); // So the screen starts offset
  8. }
  9. protected void paint(Graphics graphics) {
  10. // use transitionOffset as x or y depending on isTransitionHorizontal
  11. graphics.pushContext(...);
  12. }
  13. protected void onExposed() {
  14. transitionToOffset(0);
  15. }
  16. protected void onObscured() {
  17. int target = getTransitionMaximum();
  18. transitionToOffset(target);
  19. }
  20. private int getTransitionMaximum() {
  21. return isTransitionHorizontal ? Display.getWidth() : Display.getHeight();
  22. }
  23. private void transitionToOffset(int target) {
  24. if (currentTransition != null) {
  25. currentTransition.stop();
  26. }
  27. currentTransition = new ScreenTransition(target);
  28. getApplication().invokeLater(currentTransition);
  29. }
  30. }
  31. class ScreenTransition implements Runnable {
  32. private boolean animating;
  33. private int target;
  34. public ScreenTransitionUpdater(int target) {
  35. this.target = target;
  36. }
  37. public void stop() {
  38. animating = false;
  39. }
  40. public void run() {
  41. while(animating) {
  42. Object eventLock = getApplication().getEventLock();
  43. synchronized(eventLock) {
  44. // Interpolate myOffset to target
  45. // Set animating = false if myOffset = target
  46. invalidate();
  47. }
  48. }
  49. }
  50. }

无需将动画标记为易变,因为在此平台上忽略它.

猜你在找的Java相关文章