我想在两张图片之间切换。 在我的应用程序中有一个图像,当点击该图像时,另一个图像在一秒钟内到达并且前一个图像在同一位置。过渡需要对用户可见
我的代码是
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);
}
}
答案 0 :(得分:1)
请add
中的delete
和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);
}
答案 1 :(得分:0)
确保在删除/添加任何字段后调用invalidate()
,以便重新绘制屏幕并显示更改。