我正在制作一个应用程序,该应用程序下载约231张图像,其中有150张显示在列表视图中,其余的则在单独的活动中在图像视图中显示为完整尺寸。 第一次运行该应用程序时,下载图像大约需要4分钟或5分钟(我需要一个进度条以显示总共下载了多少张照片),然后在下载图像后将其保存到sd卡。 然后,该应用程序的连续启动将从SD卡加载图像,而不是重新下载它们。

  1. 这是解决此问题的最佳方法吗?
  2. 如何制作进度条? 我只能成功制作适用于一张图像的进度条

===============>>#1 票数:1

我知道做到这一点的最好方法是使用asynctask。 因为它将允许您执行一些后台工作并同时更新UI(在您的情况下为进度栏)。

这是我将如何执行此操作的示例代码。

ProgressDialog mProgressDialog = new ProgressDialog(YourActivity.this);
mProgressDialog.setMessage("A message");
mProgressDialog.setIndeterminate(false);
mProgressDialog.setMax(100);
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
DownloadFile downloadFile = new DownloadFile();
downloadFile.execute("the url to the file you want to download");

这是AsyncTask外观的一个示例。

private class DownloadFile extends AsyncTask<String, Integer, String>{
@Override
protected String doInBackground(String... url) {
    int count;
 try {
        URL url = new URL(url[0]);
        URLConnection conexion = url.openConnection();
        conexion.connect();
        // this will be useful so that you can show a tipical 0-100% progress bar
        int lenghtOfFile = conexion.getContentLength();

        // download the file
        InputStream input = new BufferedInputStream(url.openStream());
        OutputStream output = new FileOutputStream("/sdcard/somewhere/nameofthefile.ext");
   byte data[] = new byte[1024];

        long total = 0;
  while ((count = input.read(data)) != -1) {
            total += count;
            // publishing the progress....
            publishProgress((int)(total*100/lenghtOfFile));
            output.write(data, 0, count);
        }

        output.flush();
        output.close();
        input.close();
    } catch (Exception e) {}
    return null;
}

上面的方法始终在后台运行,您不应该从那里更新任何UI。 另一方面,onProgressUpdate在UI线程上运行,因此您将在其中更改进度栏:

@Override
public void onProgressUpdate(String... args){
    // here you will have to update the progressbar
    // with something like
    mProgressDialog.setProgress(args[0]);
}
}

如果要在文件完全下载后执行一些代码,则还需要覆盖onPostExecute方法。

  ask by Vokara1228 translate from so

未解决问题?本站智能推荐:

2回复

使用进度条

我试图在应用程序中使用进度条-单击按钮,应显示带有进度条小部件的新布局-我尝试了以下代码 但是我的应用程序在单击按钮时被终止。
1回复

ActionBar中的进度条

我正在使用一个应用程序,它将在应用程序内部加载一个网站。现在我想在操作栏中添加一个ProgressBar而不需要向上滑动到压制功能。 像那样 我在我的应用程序中使用Fragment 。 WebviewFragment fragment_webview.XML
1回复

使用进度条指示在下载图像的过程中

以下是我的布局: 我试图下载给定url链接的图像,然后在ImageView上显示该图像。 在准备好图像之前, ProgressBar显示在ImageView 。 到目前为止,我的代码可以下载图像并将其显示在ImageView 。 由于下载需要时间,因此在图像出现之前会有明显的延迟。
2回复

用图像android移动我的进度条

我有这个代码 是一个填充红色的进度条 看起来像这样 现在我想添加一个图像,同时进度条填满,如下图所示 请帮我 提前致谢
2回复

进度条有2个指标

我想要有2个指标的进度条。 一个指示器以绿色显示任务A的进度,第二个指示器以红色显示任务B的进度,全部在一个进度条中。 其余部分显示了剩余的任务A和B. 是否有(简单)解决方案来实现这一目标? 我阅读了文档,但没有找到帮助。
1回复

进度条的位置

我已经成功构建了一个选项卡式活动应用程序,其中四个选项卡均按预期工作。 每个选项卡都加载一个网页。 我的问题是,我没有在某些用户会知道页面正在加载的每个选项卡上放置进度条代码的位置。 进度条代码是否在代码或每个活动/片段的mainactiviry中? 我将不胜感激。 谢谢你的期待
1回复

进度条高度

我尝试将进度条集成到我的布局中。 进度栏无法固定所有屏幕尺寸。 我尝试多次调整高度。 但是没有人适合每一种设备。 因此,如何在所有屏幕尺寸中固定进度条的高度。 main.xml 进度条 请帮助我为所有屏幕尺寸的设备设计xml。
2回复

进度条更新进度

我想在加密文件时运行ProgressBar 。 我有以下代码,但是如何知道或分解大小,以便完成后达到100%? 与之类似,在加密工作时更新进度条%。 我是Android的新手,所以我有很多我仍然不知道,了解的东西。 }
1回复

更改一个进度条将更改所有进度条

我有三个进度条,应该更新以显示以抽认卡格式显示的每个主题的进度。 每个进度条应单独进行。 我正在使用共享首选项将进度卡中的进度保存下来,然后将数据加载到处理进度条的活动中。 我只设置了第一个进度条以进行调整,但所有3个进度条的调整都与第一个相同。 我的progressbar xml
2回复

显示进度条并在Android中的启动时加载图像

我需要显示一个包含两个正在运行的组件的启动屏幕,一个正在加载图像,另一个是进度栏。 Progressbar可以轻松显示,也可以加载图像,但是我不想使用.gif图像。 我们如何实现这一目标? 这是短片。