从网络中获取一张图片是一个耗时操作,可放在AsyncTask的doInBackground()方法中执行,在获取图片前调用 onPreExecute方法,设置一个ProgressBar给用户看,当耗时操作完成时,把获取到的图片 在onPostExecute方法展现出来。
/**
* Created by X on 2016/5/12 0012.
* 开启异步线程去做耗时操作
*/
class MyAsyncTask extends AsyncTask {
@Override
protected void onPreExecute() {
super.onPreExecute();
progressBar.setVisibility(View.VISIBLE);
}
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
progressBar.setVisibility(View.GONE);
image.setImageBitmap(bitmap);
}
@Override
protected Bitmap doInBackground(String... params) {
//获取传递进来的参数
String url=params[0];
Bitmap bitmap=null;
URLConnection connection;
InputStream is;
try {
//获取网络连接的对象
connection=new URL(url).openConnection();
is=connection.getInputStream();
BufferedInputStream bis=new BufferedInputStream(is);
Thread.sleep(1000);
//通过decodeStream解析输入流
bitmap= BitmapFactory.decodeStream(bis);
is.close();
bis.close();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
return bitmap;
}
}