All*_*lly 11
异步图像下载
首先要确保您请求在清单文件中下载图像的权限.
<uses-permission android:name="android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)
然后,要从Web下载图像,我们需要打开HTTP连接,下载并返回图像.这个方法应该进入活动.
private Bitmap DownloadImage(String URL)
Run Code Online (Sandbox Code Playgroud)
然后我们将下载的图像添加到ImageView
Bitmap bitmap = DownloadImage("http://www.streetcar.org/mim/cable/images/cable-01.jpg");
ImageView img = (ImageView) findViewById(R.id.img);
img.setImageBitmap(bitmap);
Run Code Online (Sandbox Code Playgroud)
但是,这不是异步的.
通常我们会创建一个线程来完成一些后台工作,但线程无法更新它没有创建的视图.
要解决这个问题,我们可以使用AsyncTask.我编写了这个扩展AsyncTask的小内部类.
class DownloadImagesTask extends AsyncTask<String, Integer, Bitmap> {
private int imageViewID;
protected void onPostExecute(Bitmap bitmap1) {
setImage(imageViewID, bitmap1);
}
public void setImageId(int imageViewID) {
this.imageViewID = imageViewID;
}
@Override
protected Bitmap doInBackground(String... url) {
Bitmap bitmap1 =
DownloadImage(url[0]);
return bitmap1;
}
Run Code Online (Sandbox Code Playgroud)
}
AsyncTask使用的三种类型是
所以要替换我们现在可以使用的旧代码
DownloadImagesTask task1 = new DownloadImagesTask();
task1.setImageId(R.id.img1);
task1.execute("http://assets.devx.com/articlefigs/39810_1.jpg");
Run Code Online (Sandbox Code Playgroud)
这比我计划的要长很多.代码不完美,但我希望它对你有所帮助.
注意:这是基于在DevX 上连接到Web
参考
| 归档时间: |
|
| 查看次数: |
7440 次 |
| 最近记录: |