Android 4.0加载网络图片,主要使用的是HTTP协议,对网络图片进行请求和加载。以下是几种常用的方法:
- 通过URLConnection进行图片加载
“
URL url = new URL(“http://……”); //需要加载的图片网络地址
URLConnection conn = url.openConnection();
conn.setConnectTimeout(6000); //设置连接超时
conn.setDoInput(true); //设置允许输入流
conn.setUseCaches(false); //设置禁止使用缓存
InputStream is = conn.getInputStream(); //获取输入流
Bitmap bitmap = BitmapFactory.decodeStream(is); //将输入流转换为Bitmap
is.close(); //关闭流
“ - 使用开源库Picasso进行图片加载
“
Picasso.with(context).load(“http://……”).into(imageView);
“ - 使用开源库Glide进行图片加载
“
Glide.with(context).load(“http://….”).into(imageView);
“ - 使用开源库Fresco进行图片加载
“
Uri uri = Uri.parse(“http://….”);
SimpleDraweeView draweeView = (SimpleDraweeView) findViewById(R.id.my_image_view);
draweeView.setImageURI(uri);
“
以上四种方法都可以实现Android 4.0加载网络图片的功能。选择哪种方法主要看你的项目要求,每种方法都有自己的优缺点。例如,采用URLConnection加载图片,需要自己进行线程管理和图片缓存,而使用开源库则不需要手动进行这些操作,更加简便。
在Android 4.0中,加载网络图片一般有两种方式:使用Android自带的HttpClient和HttpURLConnection方法,或者使用第三方的图片加载库,如Picasso,Glide等。
- 使用Android自带的方法:
public void loadImageFromNetwork(String url){
try {
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(url);
HttpResponse response = client.execute(get);
HttpEntity entity = response.getEntity();
byte[] bytes = EntityUtils.toByteArray(entity);
Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
imageView.setImageBitmap(bitmap);
} catch (Exception e) {
e.printStackTrace();
}
}
- 使用Picasso库:
首先在project的build.gradle中添加Picasso库的依赖:
dependencies {
compile 'com.squareup.picasso:picasso:2.5.2'
}
然后在代码中使用Picasso加载图片:
Picasso.get().load("http://www.example.com/image.jpg").into(imageView);
需要注意的是,在加载网络图片时,不建议在主线程中进行,以避免阻塞主线程导致的ANR(Application Not Responding)问题。最好是在子线程中进行网络图片加载的操作。而Picasso等第三方图片库已经帮我们做了这一部分的工作。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/165257.html