您好Stackoverflowers,我会简短,所以我的问题是:正在下载图像时,如何在应用程序中显示进度栏?我做了一些研究,发现了一些有关“预加载器”和“屏幕截图”的信息,但是我们只能在启动主应用程序之前使用它们,关于进度条,我知道我必须将其绑定,但是如何我将其与我的图像绑定吗?我非常感谢您的帮助。
这是我创建简单幻灯片的代码:
@PostConstruct
public void init()
{
All_photos photos = (All_photos) new parse_object <All_photos> (All_photos.class).ParseUri("https://api.edmunds.com/api/media/v2/styles/"+id+"/photos?api_key=wdxg7wh338vac3359m34qjj6&fmt=json");
Images = new ArrayList<Image>();
ArrayList<String> list_href = new SlideShowHelper().get_href(photos);
for ( String st:list_href)
{
System.out.println(st);
Images.add(new Image("https://media.ed.edmunds-media.com"+st+""));
}
}
要知道,下载图像需要一段时间,这取决于互联网的连接速度。
谢谢你们的帮助,我找到了答案:
final Task<ArrayList<Image>> task = new Task<ArrayList<Image>>() {
@Override protected ArrayList<Image> call() throws Exception {
int id = Data_model.getInstance().currentid();
All_photos photos = (All_photos) new parse_object <All_photos> (All_photos.class).ParseUri("https://api.edmunds.com/api/media/v2/styles/"+id+"/photos?api_key=id&fmt=json");
ArrayList<String> list_href = new SlideShowHelper().get_href(photos);
ArrayList<Image> list = new ArrayList<Image>();
int i = 1;
for ( String st:list_href)
{
System.out.println(st);
list.add(new Image("https://media.ed.edmunds-media.com"+st+"",true));
updateProgress(i, list_href.size());
Thread.sleep(400);
i++;
}
return list;
}
@Override protected void succeeded() {
super.succeeded();
updateProgress(10, 10);
img_slideshow.setImage(Images.get(0));
int count1 =count+1;
lbl_slideshow.setText(""+count1+" / "+Images.size()+"");
progress_sd.setVisible(false);
btn_sd_back.setVisible(true);
btn_sd_next.setVisible(true);
}
};
task.addEventHandler(WorkerStateEvent.WORKER_STATE_SUCCEEDED,new EventHandler<WorkerStateEvent>() {
public void handle(WorkerStateEvent t) {
Images = task.getValue();
}
});
new Thread(task).start();
//progress_sd.visibleProperty().bind(task.runningProperty());
progress_sd.progressProperty().bind(task.progressProperty());
}
它正在工作,但是?好吗 ?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句