Android-Volley网络通信框架(ImageRequest,ImageLoader,NetWorkImageView)
1.回想
上篇已经学习了,RequestQueue , StringRequest ,JsonObjectRequest 的使用
2.重点
(1)Volley请求图片的三种方式
(2)ImageRequest
(3)ImageLoader 和 LruCache (缓存)的使用
(4)NetworkImageView (与ImageLoader合作)自己定义布局文件 实现 图片请求
3.准备篇
这里还要使用 RequestQueue 来实现请求队列。
4.ImageRequest
(1)实例化 ImageRequest 对象
(2)设置參数 :这里的HttpPath.getPic() 是 URL图片地址
(3)请求成功后。回调 bitmap对象 直接能够赋值给 ImageView
(4)须要在 请求处理队列中运行
(5)默认图片能够在载入前设置好,错误图片能够在出错的时候设置
/**
* 03. imageRequest 请求一张图片
*/
private void imageRequest_get(){
ImageRequest imageRequest=new ImageRequest(HttpPath.getPic(),
new Response.Listener<Bitmap>() { @Override
public void onResponse(Bitmap response) {
// TODO Auto-generated method stub
imageView1.setImageBitmap(response);
}
},0,0,Config.RGB_565,new Response.ErrorListener() { @Override
public void onErrorResponse(VolleyError error) {
// TODO Auto-generated method stub
tv.setText(error.getMessage());
}
});
imageRequest.setTag("iamgerequest");
volleyApplication.getQueue().add(imageRequest); }
5. ImageLoader 的使用
5.1长处
(1) 能够设置 出错的时候。显示的图片和设置默认图片!
(2) 图片缓存的实现
5.2 无缓存实现 载入一张图片
/**
* 4.imageloader ,无缓存的
* 长处是:图片缓存技术
*/
private void imageLoader_get(){ //设置 图片缓存 这里为 空的。没有使用 缓存
ImageCache cache=new ImageCache() { @Override
public void putBitmap(String url, Bitmap bitmap) {
// 没有 } @Override
public Bitmap getBitmap(String url) {
// 没有
return null;
}
};
//实例化对象
ImageLoader imageLoader=new ImageLoader(volleyApplication.getQueue(),cache);
// 图片监听 (默认图片,错误图片) 和 imageView
ImageListener imageListener=ImageLoader.getImageListener(imageView1,R.drawable.ic_launcher,R.drawable.ic_launcher); //载入图片
imageLoader.get(HttpPath.getPic(),imageListener,0,0); }
5.3 ImageLoader+LruCache 实现图片的载入和缓存
(1)实现ImageCache :这里新建一个类,继承自ImgaeCache
package com.example.Util; import android.annotation.SuppressLint;
import android.graphics.Bitmap;
import android.util.LruCache;
import com.android.volley.toolbox.ImageLoader.ImageCache; @SuppressLint("NewApi")
public class BitmapCache implements ImageCache{ //使用LruCache 实现图片缓存 :
//使用地址:
//http://blog.csdn.net/guolin_blog/article/details/9316683 private LruCache<String,Bitmap> cache;
//设置最大的 尺寸值 public BitmapCache() {
//构造方法 实现 LruCache 缓存 图片 int maxSize=10*1024*1024;
cache=new LruCache<String,Bitmap>(maxSize){
@Override
protected int sizeOf(String key, Bitmap value) {
return value.getRowBytes()*value.getHeight();
}
}; } @Override
public Bitmap getBitmap(String url) {
// 得到
return cache.get(url);
} @Override
public void putBitmap(String url, Bitmap bitmap) {
// 设置
cache.put(url, bitmap);
} }
(2)以下实现调用就可以:
/**
* 4.2 将 imageLoader和 缓存联系在一起!
*/
private void imageLoader_cache(){ //设置 图片缓存 :体现 imageLoader的优势
//使用 LruBitmap + ImageCache 实现
//实例化对象
ImageLoader imageLoader=new ImageLoader(<span style="color:#ff0000;">volleyApplication.getQueue(),new BitmapCache()</span>);
// 图片监听 (默认图片,错误图片) 和 imageView
ImageListener imageListener=ImageLoader.getImageListener(imageView1,R.drawable.ic_launcher,R.drawable.ic_launcher); //载入图片
imageLoader.get(HttpPath.getPic(),imageListener,0,0); }
6.ImageLoader+NetWorkImageView 实现图片获取
(1)首先在布局文件中新加入 NetworkImageView 布局
<com.android.volley.toolbox.NetworkImageView
android:id="@+id/network_image_view"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_gravity="center_horizontal"
/>
(2)初始化 控件
使用findViewByid 实现
(3)使用
这种方法是 传进来 图片名称。后通过Url 从server获取!非常easy,须要实例化 ImageLoader;
/**
* 4.3 使用networkImageView 载入图片
*/
private void networkImageview_get(String pic){ <span style="color:#ff0000;">ImageLoader imageLoader=new ImageLoader(volleyApplication.getQueue(),new BitmapCache());</span> network_image_view.setDefaultImageResId(R.drawable.ic_launcher);
network_image_view.setErrorImageResId(R.drawable.ic_launcher);
network_image_view.setImageUrl(HttpPath.getBasicPath()+"/"+pic,imageLoader); }
Android-Volley网络通信框架(ImageRequest,ImageLoader,NetWorkImageView)的更多相关文章
- Android开发之Volley网络通信框架
今天用了一下Volley网络通信框架,感觉挺好用的,写个博客记录一下用法.方便以后VC. Volley(Google提供的网络通信库,能使网络通信更快,更简单,更健壮.) 功能模块: 1. JSON, ...
- Volley(四)—— ImageLoader & NetworkImageView
Volley(四)—— ImageLoader & NetworkImageView ImageLoader是一个加载网络图片的封装类,其内部还是由ImageRequest来实现的.但因为源码 ...
- volley get post json imagerequest imageloader networkimageview 加载网络本地图片
官方网站 https://www.androidhive.info/2014/05/android-working-with-volley-library-1/ private void initL ...
- 详细解读Volley(三)—— ImageLoader & NetworkImageView
ImageLoader是一个加载网络图片的封装类,其内部还是由ImageRequest来实现的.但因为源码中没有提供磁盘缓存的设置,所以咱们还需要去源码中进行修改,让我们可以更加自如的设定是否进行磁盘 ...
- Android应用框架-Volley网络通信框架
1.Volley简介: Volley是Google 推出的 Android 异步网络请求框架和图片加载框架. 在 Google I/O 2013 大会上发布. 2.Volley特点 扩展性强. And ...
- Volley网络通信框架
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...
- Android-Volley网络通信框架(二次封装数据请求和图片请求(包含处理请求队列和图片缓存))
1.回想 上篇 使用 Volley 的 JsonObjectRequest 和 ImageLoader 写了 电影列表的样例 2.重点 (1)封装Volley 内部 请求 类(请求队列,数据请求,图片 ...
- Android-Volley网络通信框架(自己定义Request 请求:实现 GsonRequest)
1.回想 上篇学习了android 通过 volley 网络通信框架 实现 请求图片的三种方法! 2.重点 (1)复习和熟悉 StringRequest ,JsonObjectRequest 方法 ( ...
- Android框架Volley之:利用Imageloader和NetWorkImageView加载图片
首先我们在项目中导入这个框架: implementation 'com.mcxiaoke.volley:library:1.0.19' 在AndroidManifest文件当中添加网络权限: < ...
随机推荐
- windows查看端口占用命令
开始--运行--cmd 进入命令提示符 输入netstat -aon 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选&qu ...
- 动态代理:JDK动态代理和CGLIB代理的区别
代理模式:代理类和被代理类实现共同的接口(或继承),代理类中存有指向被代理类的索引,实际执行时通过调用代理类的方法.实际执行的是被代理类的方法. 而AOP,是通过动态代理实现的. 一.简单来说: JD ...
- 阿里云ecs初始化磁盘后远程连接不到服务器
阿里云初始化磁盘后远程连接不到服务器 报错: WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! ... 原因:阿里云ecs第一次链接服务器之后会在本地电 ...
- python基础-------函数(三)
迭代器 一.迭代的概念 迭代:1 重复2 下一次重复是基于上一次的结果 l=['a','b','c','d'] count=0while count < len(l): print(l[coun ...
- C#操作防火墙控制电脑某些软件联网
问题: 目前公司软件刚由单机软件更改为联网软件,许多客户反映希望能够有一个功能来控制电脑上某些必用软件,如qq,公司软件联网,而其他不必要的如网页,游戏等软件不允许联网,于是向公司反映希望可以有一个功 ...
- Python后端开发要求
关于Python后端开发要求 一.对Python有兴趣,熟悉Python(标准库) 最好阅读过源码 了解Python的优化(熟悉pypy更佳) 二.至少至少一门语言(不说"精通") ...
- Tomcat多域名访问
对于域名解析相信很多小伙伴都了解过,就是我们在万网购买一个域名,比如hpugs.com,然后呢?我们希望域名与我们的服务器绑定,然后通过域名直接访问我们的项目,这就是本篇要和大家一起探讨的问题.下面开 ...
- 25个Java机器学习工具和库
本列表总结了25个Java机器学习工具&库: 1. Weka集成了数据挖掘工作的机器学习算法.这些算法可以直接应用于一个数据集上或者你可以自己编写代码来调用.Weka包括一系列的工具,如数据预 ...
- Centos下mongodb的安装与配置
安装MongoDB的方法有很多种,可以源代码安装,在Centos也可以用yum源安装的方法. 1.准备工作 运行yum命令查看MongoDB的包信息 yum info mongodb-org (提示没 ...
- Shell脚本数据备份