《新闻阅读器》总结”三“ ImageLoader
来源:互联网 发布:em算法 q函数 编辑:程序博客网 时间:2024/06/06 10:57
如何通过url,访问网络加载图片:
1.先建立网络连接
URL url = new URL(urlString);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
2.从网络中获取输入流
is = new BufferedInputStream(connection.getInputStream());
3.将数据流转化为图片
bitmap = BitmapFactory.decodeStream(is);
4.把连接关闭
connection.disconnect();
5.返回图片
if (bitmap != null) {
return bitmap;
}
返回的图片不能对UI线程进行更新需要借助Handler。
ImagerLoader:
/** * 这个类获通过url 访问网络, * 获取图片资源。 * */public class ImageLoader { private ImageView mImageView; private String mUrl; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (mImageView.getTag().equals(mUrl)) { mImageView.setImageBitmap((Bitmap) msg.obj); } } }; //使用多线程方式实现异步加载 public void showImage(ImageView imageView, final String url) { Log.e("======", "showImage"); mImageView = imageView; mUrl = url; new Thread() { @Override public void run() { super.run(); Bitmap bitmap = getBitmapFromURL(url); if (bitmap != null) { Message message = Message.obtain(); message.obj = bitmap; handler.sendMessage(message); } } }.start(); } public Bitmap getBitmapFromURL(String urlString) { Bitmap bitmap; InputStream is = null; //通过URL获得数据流 try {/** * 这个类获通过url 访问网络, * 获取图片资源。 * */public class ImageLoader { private ImageView mImageView; private String mUrl; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (mImageView.getTag().equals(mUrl)) { mImageView.setImageBitmap((Bitmap) msg.obj); } } }; //使用多线程方式实现异步加载 public void showImage(ImageView imageView, final String url) { Log.e("======", "showImage"); mImageView = imageView; mUrl = url; new Thread() { @Override public void run() { super.run(); Bitmap bitmap = getBitmapFromURL(url); if (bitmap != null) { Message message = Message.obtain(); message.obj = bitmap; handler.sendMessage(message);//把Bitmap 传递给Handler,让Handler进行更新ListView } } }.start(); } public Bitmap getBitmapFromURL(String urlString) { Bitmap bitmap; InputStream is = null; //通过URL获得数据流 try { URL url = new URL(urlString); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); is = new BufferedInputStream(connection.getInputStream()); //将数据流转化为图片 bitmap = BitmapFactory.decodeStream(is); connection.disconnect(); if (bitmap != null) { return bitmap; } } catch (IOException e) { e.printStackTrace(); } finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } return null; }}} catch (IOException e) { e.printStackTrace(); } finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } return null; }}
0 0
- 《新闻阅读器》总结”三“ ImageLoader
- 《新闻阅读器》总结“一”
- 《新闻阅读器》总结”五“
- 今日头条新闻阅读器 (三) 完结 、总结 篇
- (android高仿系列)今日头条 --新闻阅读器 (三) 完结 、总结 篇
- (android高仿系列)今日头条 --新闻阅读器 (三) 完结 、总结 篇
- (android高仿系列)今日头条 --新闻阅读器 (三) 完结 、总结 篇
- (android高仿系列)今日头条 --新闻阅读器 (三) 完结 、总结 篇
- (android高仿系列)今日头条 --新闻阅读器 (三) 完结 、总结 篇
- (android高仿系列)今日头条 --新闻阅读器 (三) 完结 、总结 篇
- (android高仿系列)今日头条 --新闻阅读器 (三) 完结 、总结 篇
- (android高仿系列)今日头条 --新闻阅读器 (三) 完结 、总结
- (android高仿系列)今日头条 --新闻阅读器 (三) 完结 、总结 篇
- [置顶] (android高仿系列)今日头条 --新闻阅读器 (三) 完结 、总结 篇
- (android高仿系列)今日头条 --新闻阅读器 (三) 完结 、总结 篇
- (android高仿系列)今日头条 --新闻阅读器 (三) 完结 、总结 篇
- 新闻阅读器
- 《新闻阅读器》总结”四“从网络获取数据
- iOS开发各种权限问题(相机、录音等)
- C++ STL中set容器总结
- 关于jQuery中经常用到的attr函数和after函数
- 安卓中引入GreenDAO数据库框架,包括封装好的数据库操作工具类
- 数据存储—读取Assets中的数据test
- 《新闻阅读器》总结”三“ ImageLoader
- Android Style理解
- Runnable和Callable的区别
- Spring利用MultipartFile接收FormData对象上传文件(可接收AJAX上传的包含多文件的复杂表单内容)
- 从尾到头打印链表
- ctype.h
- 数据存储-读取raw文件中的数据test
- GridControl添加操作列
- Yii2-使用ActiveRecord数据操作数据分页的记录重复问题