Vollery的图片载入使用

<pre name="code" class="java">需求:1.多线程并发请求(顺序显示出来) 2.图片压缩(保证不失真 100K*100000 流量)3.本地缓存(谷歌的做法URLCode)
思路:
>1界面必须使用NetworkImageView
  <com.android.volley.toolbox.NetworkImageView
        android:id="@+id/iv_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
>2public class MyApplication extends Application {
	@Override
	public void onCreate() {
		super.onCreate();
		
		//初始化
		RequestManager.DEFAULT_CONTENT_CHARSET="UTF-8";
		RequestManager.init(getBaseContext());
	}

}
>3使用ImageLoader载入
	ImageLoader imageLoader = RequestManager.getImageLoader();
	mImageView.setImageUrl(url,图片地址 imageLoader载入器);
}
>4GsonRequest<ImageResult> get = new GsonRequest<ImageResult>	请求服务端 请求成功获取数据
5listview.setAdapter(new ArrayAdapter<ImageInfo>(//适配器装载视图数据(优化a.可回收convertVIewb.HolderView
//调用volley显示
				holder.image.setImageUrl("http://192.168.10.100:8080/img/" + info.url,//
						loader);
 

 

代码练习:

<pre name="code" class="java">public class MainActivity extends Activity {

	private ListView listview;

	private ImageLoader loader = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_volley_imagelist);

		loader = RequestManager.getImageLoader();
		String url = "http://192.168.10.100:8080/web/ImageListServlet";

		listview = (ListView) findViewById(R.id.listview);

		Response.Listener<ImageResult> listener = new Response.Listener<ImageResult>() {

			@Override
			public void onResponse(ImageResult bean) {

				// 接着操作UI
				System.out.println(bean);

				showListView(bean);

			}

		};

		Response.ErrorListener errorListener = new Response.ErrorListener() {

			@Override
			public void onErrorResponse(VolleyError e) {

				e.printStackTrace();
			}

		};
		GsonRequest<ImageResult> get = new GsonRequest<ImageResult>(//
				Method.GET,//
				url,// 地址
				ImageResult.class, // Class<?>用来反射赋值
				null, // 添加请求
				listener, // 成功
				errorListener)// 失败
		;

		RequestManager.addRequest(get, MainActivity.this);

	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
		RequestManager.cancelAll(MainActivity.this);
	}

	private void showListView(final ImageResult bean) {

		listview.setAdapter(new ArrayAdapter<ImageInfo>(//
				getBaseContext(),//
				0,// 不需要视图由getView决定
				bean.list// 数据
		) {

			class ViewHolder {
				public NetworkImageView image;
				public TextView name;
			}

			@Override
			public View getView(int position, View convertView, ViewGroup parent) {

				ViewHolder holder = null;
				if (convertView == null) {
					holder = new ViewHolder();
					convertView = View.inflate(getBaseContext(), R.layout.list_item_imageinfo, null);

					holder.image = (NetworkImageView) convertView.findViewById(R.id.left_ic);
					holder.name = (TextView) convertView.findViewById(R.id.name);

					convertView.setTag(holder);
				} else {
					holder = (ViewHolder) convertView.getTag();
				}

				ImageInfo info = bean.list.get(position);

				holder.name.setText(info.displayname);
				//调用volley显示
				holder.image.setImageUrl("http://192.168.10.100:8080/img/" + info.url,//
						loader);
				return convertView;
			}

		});

	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Volley是一个优秀的安卓开源网络访问工具,这里包含了volley jar包和源码,版本是2015.07.28的1.0.18版本。更多资料可以参见volley的github地址: https://github.com/mcxiaoke/android-volley 1.0.18 2015.07.28 merge upstream, process response bodies only when present tweak getCacheKey(), using method and original url, fix #67 #78 add RedirectError, wrong exception for http 301 and 302, fix #51 make NetworkResponse Serializable, fix #53 create NetworkError using IOException, not using null response 1.0.17 2015.07.13 merge upstream, stop logging slow requests outside of debug logs merge pr #64, fix leaking the last request object 1.0.16 2015.05.18 fix duplicate retry, change DEFAULT_MAX_RETRIES to 0 merge pr, fix NegativeArraySizeException merge upstream, Use a BufferedOutputStream to read and write cache 1.0.15 2015.03.18 add two missing constructors for JsonArrayRequest and JsonObjectRequest add unique identifier for Request 1.0.14 2015.03.17 add more constructors for JsonArrayRequest and JsonObjectRequest update and fix gradle build, using new build.gradle 1.0.13 2015.03.16 merge pr, added constructor to JSONArrayRequest 1.0.12 2015.03.12 merge upstream, fix ImageLoader.getCacheKey() merge upstream, Fix broken DiskBasedCache merge upstream, Modify header parser to handle must-revalidate. 1.0.11 2015.03.03 merge upstream, Add a RequestFinishedListener to RequestQueue. merge upstream, Change the default character encoding for JSON responses to UTF-8 1.0.10 2014.12.30 merge upstream, Use the view size and scale type to restrict NIV requests. merge pr, Add a getImageURL method to NetworkImageView merge pr, Add the options of setting DiskBasedCache sizes in Volley.java 1.0.9 2014.11.26 merge upstream, Fix deprecation warnings (now errors in 0.14.4) w/ gradle. 1.0.8 2014.11.07 merge upstream, Metric for network time and getBackoffMultiplier() 1.0.7 2014.10.13 merge upstream, Add locale to HttpHeaderParserTest.rfc1123Date(long millis) merge upstream, Copy cache header for 304 response 1.0.6 2014.09.10 merge pr, fixed bug where Disk cache misses for redirects merge upstream, Fix crash/OOM in DiskBasedCache merge upstream, allow use of custom ImageRequests in ImageLoader 1.0.5 2014.06.18 merge upstream, Fixes bug in PATCH method. Sets the method before setting the body. update gradle and build tools version, fix build 1.0.4 2014.05.04 merge upstream, Guard against NullPointerException currently occurring in Volley when a Request is given a url whose host is null. 1.0.3 2014.04.01 merge upstream, ImageLoader: setError after null check 1.0.2 2014.02.28 merge upstream, Use the view size to restrict NIV requests. merge upstream, Fix generic type parameter for RequestQueue.add(Request) merge pr, added support for handling 301 and 302 http redirects using standalone deploy gradle build file and script 1.0.1 2014.02.13 add gradle build support, add readme, release using gradle 1.0.0 2014.01.03 create volley mirror at github, release first version
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值