我正在构建一个下载并显示多个图像的应用程序。一切进行得都很顺利。
但我希望它在下载后立即显示图像。不是在完成下载的时候。我很确定它被称为Interlaced,因为我使用的是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中完成吗?怎么样? 谢谢。
答案 0 :(得分:0)
我不确切知道,但您可以尝试从URL逐步读取,然后解码流,即使它不完整,然后在您从流中读取时将其存储在缓冲区中。
您可以使用URL.openStream()获取流,逐步复制字节数组中的内容(如果需要,可以增长),然后使用BitmapFactory.decodeByteArray获取已解码的部分位图(如果数据足够的话)当然)。
您甚至可以使用ByteArrayOutputStream作为缓冲区。
小心不要经常这样做,因为它可能会大大减慢一切。