如何让Android ImageView逐步下载图像

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中可以实现吗?如何实现呢? 谢谢。

1个回答

0

我不确定,但你可以尝试从URL逐步读取并解码流,即使它是不完整的,然后在读取流时将其存储在缓冲区中。

你可以使用URL.openStream()获取流,在一个字节数组中逐步复制内容(如果需要,可以扩展数组大小),然后使用BitmapFactory.decodeByteArray获取部分解码的位图(当然,前提是数据足够)。

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

注意不要频繁执行此操作,因为可能会严重减慢速度。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接