如何让Android ImageView逐渐下载图像

时间:2013-04-28 20:35:26

标签: android image

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

但我希望它在下载后立即显示图像。不是在完成下载的时候。我很确定它被称为Interlaced,因为我使用的是PNG。

taken from wikipedia

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

    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 :(得分:0)

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

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

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

小心不要经常这样做,因为它可能会大大减慢一切。