Blackberry 应用程序'上的黑莓动画问题;s主屏幕

Blackberry 应用程序'上的黑莓动画问题;s主屏幕,blackberry,Blackberry,我正在尝试创建一个应用程序,它在Blackberry中有一个主屏幕(MyScreen下图)动画,使图像从屏幕的底部浮动到中间。然后,我想推另一个屏幕,显示登录屏幕或其他内容(NewScreen) 动画结束后,我得到了一个空白屏幕。按一次后退,我将获得从动画屏幕中推出来的屏幕。请引导我:我应该在哪里推动以获得完美的结果 导入net.rim.device.api.animation.AnimatedScalar; 导入net.rim.device.api.animation.animation; 导

我正在尝试创建一个应用程序,它在Blackberry中有一个主屏幕(
MyScreen
下图)动画,使图像从屏幕的底部浮动到中间。然后,我想推另一个屏幕,显示登录屏幕或其他内容(
NewScreen

动画结束后,我得到了一个空白屏幕。按一次后退,我将获得从动画屏幕中推出来的屏幕。请引导我:我应该在哪里推动以获得完美的结果

导入net.rim.device.api.animation.AnimatedScalar;
导入net.rim.device.api.animation.animation;
导入net.rim.device.api.animation.Animator;
导入net.rim.device.api.animation.AnimatorListener;
导入net.rim.device.api.system.Bitmap;
导入net.rim.device.api.system.Display;
导入net.rim.device.api.system.EncodedImage;
导入net.rim.device.api.ui.Color;
导入net.rim.device.api.ui.Graphics;
导入net.rim.device.api.ui.Screen;
导入net.rim.device.api.ui.TransitionContext;
导入net.rim.device.api.ui.ui;
导入net.rim.device.api.ui.ui应用程序;
导入net.rim.device.api.ui.ui引擎实例;
导入net.rim.device.api.ui.container.main屏幕;
导入net.rim.device.api.ui.container.pop屏幕上方;
/**
*扩展MainScreen类的类,该类提供默认标准
*黑莓GUI应用程序的行为。
*/
公共最终类MyScreen扩展MainScreen实现AnimatorListener{
私人矩形移动;
私人动画师;
私人动画;
私人动画;
私有布尔运算;
公共静态最终整型球\u宽度=50;
公共信息管理;
静态传递上下文传递上下文;
静态传递上下文传递上下文输出;
静态UiEngineInstance engine=Ui.getUiEngineInstance();
/**
*创建一个新的MyScreen对象
*/
公共MyScreen(){
EncodedImage img=EncodedImage.getencodedimagesource(“logo.png”);
splashimg=img.getBitmap();
_放逐=假;
int midScreen=(Display.getWidth()/2)-img.getWidth()/2;
int endScreen=Display.getHeight();
_rect=新矩形移动(屏幕中部,球宽);
_动画师=新动画师(30);
_animator.setAnimatorListener(此);
_yanimation=\u animator.addAnimationFromTo(\u rect.getY(),
AnimatedScalar.ANIMATION\u属性\u标量,结束屏幕
-球的宽度,Display.getHeight()/2-30,
动画。测量曲线(线性,3000L);
_yanimation.setRepeatCount(1f);
_yanimation.begin(0);
UiApplication.getUiApplication().pushScreen(新新闻屏幕());
}
受保护的空心漆(图g){
如果(_){
_直拉(g,飞溅img);
}       
}
public void animatorUpdate(){
使无效();
doPaint();
}
公共无效动画处理(布尔处理){
_加工=加工;
}
}
类矩形运动{
私人int XPO;
私有动画标量ypo;
公共空白绘制(图形g、位图splashimg){
g、 setBackgroundColor(颜色:黑色);
g、 清除();
g、 setColor(颜色为灰色);
g、 drawBitmap(xPos,yPos.getInt(),splashimg.getWidth(),
getHeight(),splashimg,0,0);
/*
*g.fillEllipse(xPos,yPos.getInt(),
*xPos+MyScreen.BALL\u WIDTH,yPos.getInt(),xPos,
*yPos.getInt()+MyScreen.BALL_WIDTH,0360);
*/
}
公共int getX(){
返回XPO;
}
公共动画标量getY(){
返回YPO;
}
矩形移动(整数x,整数y){
xPos=x;
yPos=新的动画标量(y);
}    
}

我不能百分之百肯定我理解你的问题,但我编辑了你的问题来描述我认为是什么问题

当动画结束时,您将看到一个您不想要的空白白色屏幕。您必须按Back/ESC键使白色屏幕消失,以便返回登录屏幕(
新闻屏幕
)。我假设您不希望在第一次显示后看到初始动画屏幕(可能是因为它是加载屏幕或启动屏幕)

为此,您需要等待动画完成,然后再按下第二个屏幕。因此,删除对
推屏的调用

UiApplication.getUiApplication().pushScreen(新新闻屏幕());
您在
MyScreen
构造函数中拥有的。此时,动画尚未完成,因此现在推压
新闻屏幕
还为时过早

然后,当告诉
AnimatorListener
动画已停止时,按下屏幕。如果不希望动画屏幕可见,则在后退通过屏幕时,按下第二个屏幕后将其弹出:

public void动画处理(布尔处理){
_加工=加工;
如果(!处理){
//动画完成了
UiApplication.getUiApplication().pushScreen(新新闻屏幕());
//如果“MyScreen”的实例不应为空,请使用此行
//用户按Back/ESC后可见:
UiApplication.getUiApplication().popScreen(此);
}
}

我不能百分之百肯定我理解你的问题,但我编辑了你的问题来描述我认为是什么问题

当动画结束时,您将看到一个您不想要的空白白色屏幕。您必须按Back/ESC键使白色屏幕消失,以便返回登录屏幕(
新闻屏幕
)。我假设您不希望在第一次显示后看到初始动画屏幕(可能是因为它是加载屏幕或启动屏幕)

为了做到这一点,您需要等到动画