我正在開發黑莓Java開發中的一個應用程序。 我正在請求http意味着我正在連接到Web服務。Web服務的響應需要一些時間。那時候我想顯示一些等待的屏幕。黑莓 - 等待屏幕
你能告訴我,我怎麼能做到這一點....
問候 潘卡Pareek
我正在開發黑莓Java開發中的一個應用程序。 我正在請求http意味着我正在連接到Web服務。Web服務的響應需要一些時間。那時候我想顯示一些等待的屏幕。黑莓 - 等待屏幕
你能告訴我,我怎麼能做到這一點....
問候 潘卡Pareek
基本上你需要開始在後臺線程的網絡請求。 網絡操作完成後,您應通知主/ UI線程將等待屏幕更改爲結果。
要通知主線程看看下面的鏈接,搜索invokeLater
:建議
http://developers.sun.com/mobility/midp/articles/blackberrydev/
字:一次不衍生到多個線程在移動設備上。通常它們的線程的最大數量非常低。
做一件事.... 在按鈕的讀心人事件中寫入這一點。
UiApplication.getUiApplication().invokeLater(new Runnable(){
public void run(){
Status.show("Please Wait....",b,3600);
message.setText(test(theFile));
}
});
我創建一個自定義動畫位圖字段,就像這樣:// 裝載
Bitmap load_icon = Bitmap.getBitmapResource("loading.png");
AnimatedImageField spinner = new AnimatedImageField(Display.getWidth(), Display.getHeight(), load_icon,
12, 100, Field.FIELD_HCENTER | Field.FOCUSABLE
| Field.FIELD_VCENTER);
spinner.startAnimation();
add(spinner);
:
//線程類
public class AnimatedImageField extends BitmapField implements Runnable
{
private Thread thread = null;
private boolean animate=true;
private int interval = 0;
private int index=0;
private Bitmap bitmap = null;
private int frameno = 0;
private int fieldHeight=0;
private int fieldWidth=0;
private Bitmap finalbitmap = null;
private int imgHeight = 0;
private int imgWidth= 0;
public AnimatedImageField(int fieldwidth, int fieldheight, Bitmap bitmap, int frameno, int interval, long style)
{
super(bitmap, style);
this.interval=interval;
this.bitmap=bitmap;
this.frameno=frameno;
imgHeight = bitmap.getHeight();
int imgwidth = bitmap.getWidth();
imgWidth=imgwidth/frameno;
this.fieldWidth = fieldwidth;
this.fieldHeight = fieldheight;
}
public AnimatedImageField(Bitmap bitmap, int frameno, int interval, long style)
{
super(bitmap, style);
this.interval=interval;
this.bitmap=bitmap;
this.frameno=frameno;
imgHeight = bitmap.getHeight();
int imgwidth = bitmap.getWidth();
imgWidth=imgwidth/frameno;
fieldWidth = imgWidth;
fieldHeight = imgHeight;
}
protected void paint(Graphics graphics){
graphics.setColor(Color.WHITE);
graphics.fillRect(0,0,this.getPreferredWidth(), this.getPreferredHeight());
//System.out.println("animate:"+animate);
if (animate)
graphics.drawBitmap((fieldWidth-imgWidth)/2, (fieldHeight-imgHeight-50)/2,
imgWidth, bitmap.getHeight(), bitmap , imgWidth*index, 0);
else
graphics.drawBitmap((fieldWidth-finalbitmap.getWidth())/2, (fieldHeight-finalbitmap.getHeight()-50)/2,
finalbitmap.getWidth(), finalbitmap.getHeight(), finalbitmap , 0, 0);
}
public int getPreferredWidth()
{
return fieldWidth;
}
public int getPreferredHeight()
{
return fieldHeight;
}
protected void layout(int arg0, int arg1)
{
setExtent(getPreferredWidth(), getPreferredHeight());
}
public void startAnimation(){
//System.out.println("startAnimation");
animate=true;
thread = new Thread(this);
thread.start();
}
public void updateLayout(int height, int width){
//System.out.println("updateLayout:height:"+height);
this.fieldHeight=height;
this.fieldWidth=width;
super.updateLayout();
}
public void stopAnimation(Bitmap bitmap){
//System.out.println("stopAnimation");
this.finalbitmap=bitmap;
animate=false;
}
public void stopAnimation(){
//System.out.println("stopAnimation");
animate=false;
}
public void run(){
while(animate){
//System.out.println("run:animate:"+animate);
try{ Thread.sleep(interval);}catch(Exception e){}
if (index+1>=frameno)
index=0;
else
index++;
invalidate();
}
}
}
從通話
這不適合我,我只想要一個簡單的靜態圖像顯示,而我的網頁內容正在加載。請幫助。 – 2013-02-25 11:42:22
我剛剛找到一些帖子這可能對你有用(如果你還沒有看到它們)。 http://www.blackberryforums.com/developer-forum/63182-simple-please-wait-screen.html – Alex 2009-12-28 11:55:55