Volley框架载入网络图片

Android开发中,载入网络server的图片是非经常常使用的。当然我们能够自己写server接口去实现,只是要做到server性能

优越的话,开发起来比較麻烦点。所以本博客要介绍Volley框架进行网络图片载入的demo!

Volley框架集成了

AsyncHttpClient和Universal-Image-Loader的长处。开发起来很的方便了。并且性能也不错!

我们能够去下载Volley.jar,这个是我在网上找的:点击打开链接

能够去下载这个我在网上找的哦!

注意:这些网络请求的。首先都要开启权限,我们打开AndroidManifest.xml

然后定义一个全局变量Context context;

增加代码:

       <!-- 配置网络连接须要的属性 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

方法一:通过ImageRequest,进行载入

 public void imageRequest(){
    	context = this;
    	imageView = (ImageView)findViewById(R.id.imageView1);
    	//创建一个RequestQueue对象
    	RequestQueue requestQueue = Volley.newRequestQueue(context);

    	//创建ImageRequest对象
    	ImageRequest imageRequest = new ImageRequest(
    			"http://c.csdnimg.cn/public/favicon.ico",//url
    			new Response.Listener<Bitmap>() {//监听器Listener
    				@Override
    				public void onResponse(Bitmap response) {
    					imageView.setImageBitmap(response);
    				}
    				//參数3、4表示图片宽高,Bitmap.Config.ARGB_8888表示图片每一个像素占领4个字节大小
    			}, 0, 0, Config.ARGB_8888, new Response.ErrorListener() {//图片载入请求失败的回调Listener
    				@Override
    				public void onErrorResponse(VolleyError error) {
    					imageView.setImageResource(R.drawable.ic_normal_pic);
    				}
    			});
    	//将ImageRequest载入到Queue
    	requestQueue.add(imageRequest);
    }

方法二:通过ImageLoader。进行载入

介绍一下imageLoader,imageLoader不是继承ImageRequest。不是内部实现还是通过ImageRequest的,

ImageLoader来实现的优点是能够过滤反复的url,这样就提高了性能

 public void imageLoad(){
    	context = this;
    	imageView = (ImageView)findViewById(R.id.imageView1);
    	//创建一个RequestQueue对象
    	RequestQueue requestQueue = Volley.newRequestQueue(context);
    	//创建一个ImageLoader
    	ImageLoader imageLoader = new ImageLoader(requestQueue, new ImageCache() {
    		@Override
    		public void putBitmap(String url, Bitmap bitmap) {
    		}

    		@Override
    		public Bitmap getBitmap(String url) {
    			return null;
    		}
    	});

    	//ImageListener
    	ImageListener listener = ImageLoader.getImageListener(imageView,
    			R.drawable.ic_normal_pic, R.drawable.ic_normal_pic);

    	//url、listener、maxWidth、maxHeight
    	imageLoader.get("http://c.csdnimg.cn/public/favicon.ico", listener, 200, 200);

    }

方法三:通过NetworkImageLoader

继承自ImageView的。具备ImageView控件的全部功能,而且在原生的基础之上增加了载入网络图片的功能。也就是

Volley框架提供的View

  public void networkImageLoad(){
    	context = this;

    	//创建一个RequestQueue对象
    	RequestQueue requestQueue = Volley.newRequestQueue(context);
    	//创建一个ImageLoader
    	ImageLoader imageLoader = new ImageLoader(requestQueue, new ImageCache() {
    		@Override
    		public void putBitmap(String url, Bitmap bitmap) {
    		}

    		@Override
    		public Bitmap getBitmap(String url) {
    			return null;
    		}
    	});
    	//NetworkImageView
    	networkImageView = (NetworkImageView) findViewById(R.id.network_image_view);

    	networkImageView.setDefaultImageResId(R.drawable.ic_normal_pic);
    	networkImageView.setErrorImageResId(R.drawable.ic_normal_pic);
    	//设置url和ImageLoader对象
    	networkImageView.setImageUrl("http://c.csdnimg.cn/public/favicon.ico",
    					imageLoader);
    }

Layout:

 <com.android.volley.toolbox.NetworkImageView
        android:id="@+id/network_image_view"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_gravity="center_horizontal"
        />  

Demo代码下载:点击打开链接





时间: 2024-10-11 05:12:59

Volley框架载入网络图片的相关文章

Android利用Volley框架加载网络图片

Volley框架是在Google I/O 2013上Volley发布的,目的是使Android平台上的网络通信库,能使网络通信更快,更简单,更健壮.我们也简单了解下Volley引入的背景,在Volley出现以前,我们可能面临如下的问题,比如要在ListView或是GridView中加载数量较多的图片时:先在ListAdapter#getView()里开始图像的读取,再通过AsyncTask等机制使用HttpURLConnection从服务器去的图片资源,然后在AsyncTask#onPostEx

使用Volley框架的ImageLoader加载网络图片

Volley框架在请求网络图片方面也做了很多工作,提供了好几种方法.本文介绍使用ImageLoader来进行网络图片的加载. ImageLoader的内部使用ImageRequest来实现,它的构造器可以传入一个ImageCache缓存形参,实现了图片缓存的功能,同时还可以过滤重复链接,避免重复发送请求. 下面是ImageLoader加载图片的实现方法: public void displayImg(View view){ ImageView imageView = (ImageView)thi

Volley框架

Volley框架 volley是谷歌官方在2013年推出的Android平台上的网络通信库 特点 网络通信更快,更简单,开发效率高,稳定性高. 对get和post网络请求以及网络图片高效的异步处理请求. 可以对网络请求进行优先级排序处理. 网络请求的缓存. 多级别取消请求. 和Activity生命周期的联动. 缺点不适合数据的上传与下载 Get和Post请求接口的使用请求对象 StringRequest 返回结果类型不确定(它包含后面两种) StringRequest request = new

Android Volley入门到精通:使用Volley加载网络图片

在上一篇文章中,我们了解了Volley到底是什么,以及它的基本用法.本篇文章中我们即将学习关于Volley更加高级的用法,如何你还没有看过我的上一篇文章的话,建议先去阅读Android Volley完全解析(一),初识Volley的基本用法. 在上篇文章中有提到过,Volley是将AsyncHttpClient和Universal-Image-Loader的优点集成于一身的一个框架.我们都知道,Universal-Image-Loader具备非常强大的加载网络图片的功能,而使用Volley,我们

android Volley 框架详解

开发android应用很多时候都要涉及网络操作,Android SDK中提供了HttpClient 和 HttpUrlConnection两种方式用来处理网络操作,但当应用比较复杂的时候需要我们编写大量的代码处理很多东西:图像缓存,请求的调度等等: 而Volley框架就是为解决这些而生的,它与2013年Google I/O大会上被提出:使得Android应用网络操作更方便更快捷:抽象了底层Http Client等实现的细节,让开发者更专注与产生RESTful Request.另外,Volley在

Android Volley框架的使用(三)

Image Request 为了更方便的使用Volley中的图片请求,我们同样先在VolleyController类中封装一个ImageLoader package com.javen.volley; import android.content.Context; import android.text.TextUtils; import com.android.volley.Request; import com.android.volley.RequestQueue; import com.

Android利用Volley异步载入数据完整具体演示样例(二)

MainActivity例如以下: package cc.y; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.os.Bundle; import android.util.LruCache; import android.widget.ImageVie

Android Volley完全解析(二),使用Volley加载网络图片

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/17482165 在上一篇文章中,我们了解了Volley到底是什么,以及它的基本用法.本篇文章中我们即将学习关于Volley更加高级的用法,如何你还没有看过我的上一篇文章的话,建议先去阅读Android Volley完全解析(一),初识Volley的基本用法. 在上篇文章中有提到过,Volley是将AsyncHttpClient和Universal-Image-Loader的优点集成

volley框架下发送和读取cookie

我们平时开发android应用都需要用到网络技术,通常采用http协议来发起请求并接受网络数据.android系统提供两种方式进行http通信:HttpURLConnection和HttpClient.不过这两种方式稍复杂,如果不适当封装回到子汉许多重复代码.因此android网络通信框架应运而生,如AsynHttpClient(把Http所有的通信细节全封装在内,只需几行代码就可以完成通信),Universal_Image_loader(使界面上显示网络图片的操作变得极其简单,开发者不用关心如