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)的更多相关文章

  1. Android开发之Volley网络通信框架

    今天用了一下Volley网络通信框架,感觉挺好用的,写个博客记录一下用法.方便以后VC. Volley(Google提供的网络通信库,能使网络通信更快,更简单,更健壮.) 功能模块: 1. JSON, ...

  2. Volley(四)—— ImageLoader & NetworkImageView

    Volley(四)—— ImageLoader & NetworkImageView ImageLoader是一个加载网络图片的封装类,其内部还是由ImageRequest来实现的.但因为源码 ...

  3. volley get post json imagerequest imageloader networkimageview 加载网络本地图片

    官方网站  https://www.androidhive.info/2014/05/android-working-with-volley-library-1/ private void initL ...

  4. 详细解读Volley(三)—— ImageLoader & NetworkImageView

    ImageLoader是一个加载网络图片的封装类,其内部还是由ImageRequest来实现的.但因为源码中没有提供磁盘缓存的设置,所以咱们还需要去源码中进行修改,让我们可以更加自如的设定是否进行磁盘 ...

  5. Android应用框架-Volley网络通信框架

    1.Volley简介: Volley是Google 推出的 Android 异步网络请求框架和图片加载框架. 在 Google I/O 2013 大会上发布. 2.Volley特点 扩展性强. And ...

  6. Volley网络通信框架

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...

  7. Android-Volley网络通信框架(二次封装数据请求和图片请求(包含处理请求队列和图片缓存))

    1.回想 上篇 使用 Volley 的 JsonObjectRequest 和 ImageLoader 写了 电影列表的样例 2.重点 (1)封装Volley 内部 请求 类(请求队列,数据请求,图片 ...

  8. Android-Volley网络通信框架(自己定义Request 请求:实现 GsonRequest)

    1.回想 上篇学习了android 通过 volley 网络通信框架 实现 请求图片的三种方法! 2.重点 (1)复习和熟悉 StringRequest ,JsonObjectRequest 方法 ( ...

  9. Android框架Volley之:利用Imageloader和NetWorkImageView加载图片

    首先我们在项目中导入这个框架: implementation 'com.mcxiaoke.volley:library:1.0.19' 在AndroidManifest文件当中添加网络权限: < ...

随机推荐

  1. oracle 归档模式开启后数据库宕机解决过程

    首先按照网友说的shutdown immediately,结果hang了半个小时也么反应. 然后检查日志,全盘搜索.trc,发现 (D:\app\oracle\diag\rdbms\cms1u\cms ...

  2. form提交地址地址正确但是依旧报错404找不到路径

    ---恢复内容开始--- 我的jsp中保含了">="和"<="符号,form提交的时候会有个标签校验,如下: private static bool ...

  3. CSS和文档

    1. 块级元素: p,div,ul,ol,h1,h2 . . . h6等.块级元素独占一行,旁边不能有其他元素. 2. 行内元素:span,a,strong,em等. display属性可以使块级元素 ...

  4. word,excel,ppt转Pdf,Pdf转Swf,通过flexpaper+swftools实现在线预览

    其实这是我好几年前的项目,现在再用这种方式我也不建议了,毕竟未来flash慢慢会淘汰,此方式也是因为目测大部分人都装了flash,才这么做的,但是页面展示效果也不好.其实还是考虑收费的控件,毕竟收费的 ...

  5. PHP通过Zabbix API获取服务器监控信息

    开源监控系统Zabbix提供了丰富的API,供第三方系统调用. 基本步骤如下: 1.获取合法认证:连接对应Zabbix URL,并提供用户名和密码,HTTP方法为"POST",HT ...

  6. css基础-语法篇

    CSS基础 1.css简介 cascading style sheets    汉译层叠样式表,WEB标准中的表现标准语言,表现标准语言在网页中主要对网页信息的显示进行控制,简单说就是如何修饰网页信息 ...

  7. ORA-01745: 无效的主机/绑定变量名 ORA-00917: 缺失的逗号 oracle日期格式错误

    今天在oracle中执行插入语句的时候报了一个奇怪的错误,在程序中报的错误是ORA-01745: 无效的主机/绑定变量名,网上一查说是缺失逗号,在查询分析器执行的时候报缺失的逗号,仔细看了一下也没有缺 ...

  8. 使用Microsoft.AspNetCore.TestHost进行完整的功能测试

    简介 Microsoft.AspNetCore.TestHost是可以用于Asp.net Core 的功能测试工具.很多时候我们一个接口写好了,单元测试什么的也都ok了,需要完整调试一下,检查下单元测 ...

  9. JavaEE中的MVC(五)定制Struts——Action跳转JSP

    在JavaEE中的MVC(三)中,我在Servlet中引入了命令模式的使用,采用Xml配置的方式,实现了一个Servlet调用多个不同的Action类,但是还不能实现页面地跳转,这一篇博客从之前的代码 ...

  10. javaScript(JS)强制保留两位小数的输入数校验和小数保留

    参考来源于网络,如有侵权,请联系作者删除: 输入input 的格式校验: $(function(){ var data = $.trim($("#inputId").val()); ...