Blackberry 如何添加时间延迟

Blackberry 如何添加时间延迟,blackberry,Blackberry,我试图在两个图像之间切换。 在我的应用程序中,有一个图像,当单击此图像时,另一个图像在一秒钟内出现,并且前一个图像出现在同一位置。过渡需要对用户可见 我的代码是 import net.rim.device.api.ui.component.*; import net.rim.device.api.ui.container.*; import net.rim.device.api.ui.UiApplication; import net.rim.device.api.system.Bitmap;

我试图在两个图像之间切换。 在我的应用程序中,有一个图像,当单击此图像时,另一个图像在一秒钟内出现,并且前一个图像出现在同一位置。过渡需要对用户可见

我的代码是

import net.rim.device.api.ui.component.*;
import net.rim.device.api.ui.container.*;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.system.Bitmap;
import net.rim.device.api.ui.TouchEvent;
class aaa extends UiApplication
{
 public aaa()
{
    pushScreen(new bbb());
}
public static void main(String args[])
{
    aaa theApp= new aaa();
    theApp.enterEventDispatcher();
}
}
class bbb extends MainScreen
{
boolean flag=true;
BitmapField refresh1,refresh2;
HorizontalFieldManager hfm;
public bbb()
{
    hfm= new HorizontalFieldManager(HorizontalFieldManager.FIELD_RIGHT);
    refresh2= new BitmapField(Bitmap.getBitmapResource("refresh_depressed.png"));
    refresh1= new BitmapField(Bitmap.getBitmapResource("refresh.png"))
    {
        protected boolean touchEvent(TouchEvent message) 
        { 
            if ( message.getEvent() == TouchEvent.CLICK ) 
            {
                synchronized (UiApplication.getUiApplication().getAppEventLock()) 
                {
                    if(flag)
                    {
                        hfm.delete(refresh1);
                        hfm.add(refresh2);
                        flag = false;
                    }
                    else
                    {
                        hfm.delete(refresh2);
                        hfm.add(refresh1);
                        flag=true;
                    }
                    return true;
                }                    
            }
            return super.touchEvent(message);
        }
    };

    hfm.add(refresh1);    
    add(hfm);    
}
}

确保在删除/添加任何字段后调用
invalidate()
,以便重新绘制屏幕并显示更改

确保在删除/添加任何字段后调用
invalidate()
,以便重新绘制屏幕并显示更改

请在
eventlock
中添加
删除
字段

我已经更新了你的代码,如下所示

boolean flag = false;
    public bbb()
{
    hfm= new HorizontalFieldManager(HorizontalFieldManager.FIELD_RIGHT);
    Bitmap refresh2 = Bitmap.getBitmapResource("refresh_depressed.png"));
    Bitmap refresh1= Bitmap.getBitmapResource("refresh.png");
    BitmapField bfield = new BitmapField(refresh2)
    {
        protected boolean touchEvent(TouchEvent message) 
        { 
            if ( message.getEvent() == TouchEvent.CLICK ) 
            {
                synchronized (UiApplication.getUiApplication().getAppEventLock()) 
                {
                    if(flag)
                    {
                        bfield.setBitmap(refresh1);
                        flag = false;
                    }
                    else
                    {
                        bfield.setBitmap(refresh2);
                        flag=true;
                    }
                    return true;
                }                    
            }
            return super.touchEvent(message);
        }
    };

    hfm.add(bfield);    
    add(hfm);    
}

请执行
添加
删除
事件锁定
中的字段

我已经更新了你的代码,如下所示

boolean flag = false;
    public bbb()
{
    hfm= new HorizontalFieldManager(HorizontalFieldManager.FIELD_RIGHT);
    Bitmap refresh2 = Bitmap.getBitmapResource("refresh_depressed.png"));
    Bitmap refresh1= Bitmap.getBitmapResource("refresh.png");
    BitmapField bfield = new BitmapField(refresh2)
    {
        protected boolean touchEvent(TouchEvent message) 
        { 
            if ( message.getEvent() == TouchEvent.CLICK ) 
            {
                synchronized (UiApplication.getUiApplication().getAppEventLock()) 
                {
                    if(flag)
                    {
                        bfield.setBitmap(refresh1);
                        flag = false;
                    }
                    else
                    {
                        bfield.setBitmap(refresh2);
                        flag=true;
                    }
                    return true;
                }                    
            }
            return super.touchEvent(message);
        }
    };

    hfm.add(bfield);    
    add(hfm);    
}

你好另一个问题。此图像现在在屏幕上不可见,您只需使用refresh=new位图字段(Bitmap.getBitmapResource(“res/refresh.png”);刷新1和刷新2在哪里。并从gerBitmapResource(“..”)中删除“res/”;嘿,我做完了。。这些错误并没有在我的实际代码中删除,我已经。。但是仍然没有得到这种效果。问题是只有一种效果是可见的,而另一种效果是不可见的。。i、 第二张图片就要出现了,请给我你创建的整个类。我想添加删除,然后在单击一次后再次添加这两个字段。嗨。。另一个问题。此图像现在在屏幕上不可见,您只需使用refresh=new位图字段(Bitmap.getBitmapResource(“res/refresh.png”);刷新1和刷新2在哪里。并从gerBitmapResource(“..”)中删除“res/”;嘿,我做完了。。这些错误并没有在我的实际代码中删除,我已经。。但是仍然没有得到这种效果。问题是只有一种效果是可见的,而另一种效果是不可见的。。i、 e.第二个图像即将出现请给我您创建的整个类。我想添加删除,然后在单击一次后再次添加这两个字段。您只需在refresh1位图中声明touchEvent。因此,请在refresh2中执行相同的操作。您只需在refresh1位图中声明touchEvent。所以请在refresh2中做同样的事情。