カスタム読み込み画面を作成したい クラスを作成しましたが、機能しません
読み込み時に画像をロードする一連の画像文字列を渡す LoadingScreen クラスを作成しました
import net.rim.device.api.ui.Color;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.container.VerticalFieldManager;
import net.rim.device.api.ui.decor.BackgroundFactory;
public class LoadingScreen extends MainScreen {
VerticalFieldManager vfm_Progress;
String progressImgStr[]={"progress0000.png","progress0001.png","progress0002.png","progress0003.png","progress0004.png","progress0005.png","progress0006.png","progress0007.png"};
public LoadingScreen() {
this.getMainManager().setBackground(BackgroundFactory.createSolidTransparentBackground(Color.BLACK, 200));
vfm_Progress=new VerticalFieldManager();
LoadThread spin=new LoadThread(progressImgStr,this);
spin.startLoading();
spin.start();
}
}
このクラスは、画像をロードして LoadingScreen の VerticalFieldManager に追加する Thread クラスを呼び出しますが、IIlegalStateException というエラーが発生するため、機能しません。
スレッドクラスは次のとおりです
import net.rim.device.api.system.Bitmap;
import net.rim.device.api.ui.component.BitmapField;
public class LoadThread extends Thread{
private String[] mProgressImgStr;
private boolean isLoading=false;
LoadingScreen loadScreen;
public LoadThread(String[] progressImgStr,LoadingScreen loadScreen) {
this.mProgressImgStr=progressImgStr;
this.loadScreen=loadScreen;
}
public void run() {
if(isLoading)
{
for (int i = 0; i < mProgressImgStr.length; i++) {
Bitmap img=Bitmap.getBitmapResource(mProgressImgStr[i]);
BitmapField progressImgFld=new BitmapField(img);
loadScreen.vfm_Progress.add(progressImgFld);
loadScreen.add(loadScreen.vfm_Progress);
try {
this.sleep(250);
loadScreen.vfm_Progress.delete(progressImgFld);
loadScreen.delete(loadScreen.vfm_Progress);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(i==mProgressImgStr.length-1)
{
i=0;
}
}
}
//super.run();
}
public void stopLoading()
{
isLoading=false;
}
public void startLoading()
{
isLoading=true;
}
}