【发布时间】:2014-05-29 18:17:00
【问题描述】:
我正在尝试使用 AsyncTask 将图像 URL 转换为位图,以便将其设置为图像。我不明白如何从 AsyncTask 中获取位图,以便将其设置为我在循环中创建的图像。我还尝试将位图设置为 AsyncTask 中的图像。我的理解是,一切都必须在 AsyncTask 内完成,但我无法引用要为其设置值的图像。
我研究了位图转换的 URL 和 AsyncTask,但我不知道如何将它们结合起来以获得我想要的。这必须是一个相当普遍的任务。为什么这么难?
如何在 AsyncTask 中引用我的图像?
我可以返回我的位图,然后将其设置为 AsyncTask 之外的图像吗?
有没有更简单的方法将 URL 设置为图像源?
我已经包含了到目前为止的内容。
感谢您的帮助并花时间阅读本文。
class BitmapTaks extends AsyncTask<String, Void, Bitmap> {
public Bitmap doInBackground(String... urls) {
Bitmap bm = null;
try {
URL aURL = new URL(urls[0]);
URLConnection conn = aURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
bm = BitmapFactory.decodeStream(bis);
bis.close();
is.close();
} catch (IOException e) {
Log.e("img", "Error getting bitmap", e);
}
return bm;
}
protected void onPostExecute(Bitmap bm) {
//do something after execute
}
}
【问题讨论】:
-
您可以将您的位图从异步的 doInBackground 返回到 onPostExecute,就像您正在做的那样。有什么问题?
-
使用毕加索,简单易行。 (此外,您的代码中只缺少最后一点代码(将位图设置为图像视图),您几乎就在那里。)
-
你在正确的轨道上。
标签: java android url bitmap android-asynctask