3

我正在构建一个下载并显示多个图像的应用程序。一切进行得都很顺利。

但我希望它在下载后立即显示图像。不是当它完成下载。我很确定它被称为隔行扫描,因为我使用 PNG。

取自维基百科

这是我为下载和显示图像所做的代码的一部分:

    private class DownloadTask extends AsyncTask<String, Integer, Bitmap> {

    @Override
    protected void onPostExecute(Bitmap result) {
        ivGambar.setImageBitmap(result);// ivGambar is an ImageView

        pbDetail.setVisibility(View.INVISIBLE);

    }

    @Override
    protected Bitmap doInBackground(String... pa) {
        try {
            return BitmapFactory.decodeStream((InputStream) new URL(pa[0])
                    .getContent());
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }
}

它可以在Android中完成吗?如何?谢谢你。

4

1 回答 1

0

我不知道确切,但是您可以尝试从 URL 逐步读取,然后即使流不完整也对其进行解码,然后在从流中读取时进行解码,并将其存储在缓冲区中。

您可以使用URL.openStream()获取流,逐步复制字节数组中的内容(如果需要,将其增长),然后使用BitmapFactory.decodeByteArray获取解码的部分位图(当然,如果数据足够的话)。

您甚至可以使用ByteArrayOutputStream作为缓冲区。

小心不要太频繁地这样做,因为它可能会大大减慢一切。

于 2013-04-29T19:39:24.323 回答