您的位置:首页 > 理论基础 > 计算机网络

android从网络获取图片并显示

2016-04-27 10:55 483 查看
由于安卓4.0以上 耗时操作要在子线程,更新UI的操作需要在主线程,所以:

public class ImxxFragment extends Fragment {
public Bitmap bitmap;
public ImageView dtx;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.imxx, container, false);
dtx = (ImageView) view.findViewById(R.id.dtx);
//得到可用的图片
new Thread(new Runnable() {
public void run() {
new AnotherTask().execute("JSON");
}
}).start();
return view;
}
private class AnotherTask extends AsyncTask<String, Void, String>{
@Override
protected void onPostExecute(String result) {
//对UI组件的更新操作
dtx.setImageBitmap(bitmap);
}

@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
bitmap = getHttpBitmap(teacher.img);
return params[0];
}
}

public static Bitmap getHttpBitmap(String url){
URL myFileURL;
Bitmap bitmap=null;
try{
myFileURL = new URL(url);
//获得连接
HttpURLConnection conn=(HttpURLConnection)myFileURL.openConnection();
//设置超时时间为6000毫秒,conn.setConnectionTiem(0);表示没有时间限制
conn.setConnectTimeout(6000);
//连接设置获得数据流
conn.setDoInput(true);
//不使用缓存
conn.setUseCaches(false);
//这句可有可无,没有影响
//conn.connect();
//得到数据流
InputStream is = conn.getInputStream();
//解析得到图片
bitmap = BitmapFactory.decodeStream(is);
//关闭数据流
is.close();
}catch(Exception e){
e.printStackTrace();
}

return bitmap;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: