有谁知道如何使用黑莓 JDE API 创建类似于 Blackberry App World 中的 Featured Items 屏幕的屏幕幻灯片动画?我知道在黑莓 5.0 中,有一些转换 API 可以执行此操作。但我希望为 4.6 版操作系统做到这一点。它使用黑莓粗体的滚动球具有很好的滚动效果。
谢谢。
有谁知道如何使用黑莓 JDE API 创建类似于 Blackberry App World 中的 Featured Items 屏幕的屏幕幻灯片动画?我知道在黑莓 5.0 中,有一些转换 API 可以执行此操作。但我希望为 4.6 版操作系统做到这一点。它使用黑莓粗体的滚动球具有很好的滚动效果。
谢谢。
作为屏幕截图/位图方法的替代方案......
在屏幕的绘制方法中,您可以使用 Graphics.pushContext(..) 推送剪切区域和绘图偏移。为了获得最佳结果,您需要在可运行文件中进行转换,并在事件锁上同步。这将确保您的屏幕可以在过渡过程中被关闭。
粗略的例子:
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();
}
}
}
}
无需将动画标记为 volatile,因为它在此平台上被忽略。
也许使用计时器来改变paint方法中图像的坐标位置