Как создать анимацию слайдов на экране Blackberry, похожую на Blackberry App World? - PullRequest
5 голосов
/ 20 декабря 2009

Кто-нибудь знает, как использовать JDE API Blackberry для создания анимации слайдов экрана, аналогичной экрану «Избранные элементы» в мире приложений Blackberry? Я знаю, что в Blackberry 5.0 есть некоторые переходные API для этого. Но я хочу сделать это для версии 4.6 OS. Он имеет приятный эффект прокрутки с помощью шарика прокрутки в Blackberry Bold.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 22 июля 2010

Как альтернатива скриншоту / растровому подходу ...

В методе рисования вашего экрана вы можете использовать Graphics.pushContext (..), чтобы выдвинуть область отсечения и смещение при рисовании. Для достижения наилучших результатов вы захотите выполнить переход в работоспособном режиме и синхронизироваться при блокировке событий. Это гарантирует, что ваш экран может быть отклонен в середине перехода.

Грубый пример:

</p> <pre><code>class TransitionScreen extends Screen { private int transitionOffset; private boolean isTransitionHorizontal; private ScreenTransition currentTransition; public TransitionScreen(boolean isTransitionHorizontal) { this.isTransitionHorizontal = isTransitionHorizontal; transitionOffset = getTransitionMaximum(); // So the screen starts offset } protected void paint(Graphics graphics) { // use transitionOffset as x or y depending on isTransitionHorizontal graphics.pushContext(...); } protected void onExposed() { transitionToOffset(0); } protected void onObscured() { int target = getTransitionMaximum(); transitionToOffset(target); } private int getTransitionMaximum() { return isTransitionHorizontal ? Display.getWidth() : Display.getHeight(); } private void transitionToOffset(int target) { if (currentTransition != null) { currentTransition.stop(); } currentTransition = new ScreenTransition(target); getApplication().invokeLater(currentTransition); } } class ScreenTransition implements Runnable { private boolean animating; private int target; public ScreenTransitionUpdater(int target) { this.target = target; } public void stop() { animating = false; } public void run() { while(animating) { Object eventLock = getApplication().getEventLock(); synchronized(eventLock) { // Interpolate myOffset to target // Set animating = false if myOffset = target invalidate(); } } } }

Нет необходимости отмечать анимацию как изменчивую, поскольку она игнорируется на этой платформе.

0 голосов
/ 21 декабря 2009

Может быть, использовать таймер для изменения положения координат изображений в методе рисования

...