volley 应用 GET POST请求 图片异步加载

Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮

[java] view plaincopy

  1. package com.example.volleydemo;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4. import org.json.JSONObject;
  5. import android.app.Activity;
  6. import android.app.ProgressDialog;
  7. import android.graphics.Bitmap;
  8. import android.os.Bundle;
  9. import android.support.v4.util.LruCache;
  10. import android.util.Log;
  11. import android.widget.ImageView;
  12. import com.android.volley.Request;
  13. import com.android.volley.RequestQueue;
  14. import com.android.volley.Response;
  15. import com.android.volley.VolleyError;
  16. import com.android.volley.toolbox.ImageLoader;
  17. import com.android.volley.toolbox.ImageLoader.ImageCache;
  18. import com.android.volley.toolbox.ImageLoader.ImageListener;
  19. import com.android.volley.toolbox.JsonObjectRequest;
  20. import com.android.volley.toolbox.NetworkImageView;
  21. import com.android.volley.toolbox.StringRequest;
  22. import com.android.volley.toolbox.Volley;
  23. /**
  24. * Demo描述: 1 利用Volley获取JSON数据  2 利用Volley异步加载图片 1 利用NetworkImageView加载网路图片
  25. *
  26. */
  27. public class MainActivity extends Activity {
  28. private ImageView mImageView;
  29. private NetworkImageView mNetworkImageView;
  30. @Override
  31. protected void onCreate(Bundle savedInstanceState) {
  32. super.onCreate(savedInstanceState);
  33. setContentView(R.layout.activity_main);
  34. init();
  35. }
  36. private void init() {
  37. mImageView = (ImageView) findViewById(R.id.imageView);
  38. mNetworkImageView = (NetworkImageView) findViewById(R.id.networkImageView);
  39. getJSONByVolley();
  40. getJsonPost();
  41. loadImageByVolley();
  42. showImageByNetworkImageView();
  43. }
  44. /**
  45. * 利用Volley获取JSON数据
  46. */
  47. private void getJSONByVolley() {
  48. RequestQueue requestQueue = Volley.newRequestQueue(this);
  49. String JSONDataUrl = "http://127.0.0.1:8099/api/api.ashx?action=product_list&ver=1&pageindex=1&pageCount=5";
  50. final ProgressDialog progressDialog = ProgressDialog.show(this,
  51. "请稍后...", "正在加载...");
  52. JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(
  53. Request.Method.GET, JSONDataUrl, null,
  54. new Response.Listener<JSONObject>() {
  55. @Override
  56. public void onResponse(JSONObject response) {
  57. //处理返回的JSON数据
  58. Log.e("bbb", response.toString());
  59. if(progressDialog.isShowing() && progressDialog!=null){
  60. progressDialog.dismiss(); }
  61. }
  62. }, new Response.ErrorListener() {
  63. @Override
  64. public void onErrorResponse(VolleyError arg0) {
  65. // System.out.println("sorry,Error");
  66. Log.e("aaa", arg0.toString());
  67. }
  68. });
  69. requestQueue.add(jsonObjectRequest);
  70. }
  71. /***
  72. * 以POST形式加载数据
  73. */
  74. private void getJsonPost() {
  75. RequestQueue requestQueue = Volley.newRequestQueue(this);
  76. String url = "http://127.0.0.1:8099/api/api.ashx";
  77. StringRequest postRequest = new StringRequest(Request.Method.POST, url,
  78. new Response.Listener<String>() {
  79. @Override
  80. public void onResponse(String response) {
  81. //处理返回的JSON数据
  82. Log.d("Response", response);
  83. }
  84. }, new Response.ErrorListener() {
  85. @Override
  86. public void onErrorResponse(VolleyError error) {
  87. // error
  88. }
  89. }) {
  90. @Override
  91. protected Map<String, String> getParams() {
  92. //POST 参数
  93. Map<String, String> params = new HashMap<String, String>();
  94. params.put("action", "product_list");
  95. params.put("ver", "1");
  96. params.put("pageindex", "1");
  97. params.put("pageCount", "5");
  98. return params;
  99. }
  100. };
  101. requestQueue.add(postRequest);
  102. }
  103. /**
  104. * 利用Volley异步加载图片
  105. *
  106. * 注意方法参数: getImageListener(ImageView view, int defaultImageResId, int
  107. * errorImageResId) 第一个参数:显示图片的ImageView 第二个参数:默认显示的图片资源 第三个参数:加载错误时显示的图片资源
  108. */
  109. private void loadImageByVolley() {
  110. String imageUrl = "http://d.hiphotos.baidu.com/pic/w%3D310/sign=a00aca825aafa40f3cc6c8dc9b65038c/060828381f30e9246b63e1814c086e061c95f7bf.jpg";
  111. RequestQueue requestQueue = Volley.newRequestQueue(this);
  112. final LruCache<String, Bitmap> lruCache = new LruCache<String, Bitmap>(
  113. 20);
  114. ImageCache imageCache = new ImageCache() {
  115. @Override
  116. public void putBitmap(String key, Bitmap value) {
  117. lruCache.put(key, value);
  118. }
  119. @Override
  120. public Bitmap getBitmap(String key) {
  121. return lruCache.get(key);
  122. }
  123. };
  124. ImageLoader imageLoader = new ImageLoader(requestQueue, imageCache);
  125. ImageListener listener = ImageLoader.getImageListener(mImageView,
  126. R.drawable.ic_launcher, R.drawable.ic_launcher);
  127. imageLoader.get(imageUrl, listener);
  128. }
  129. /**
  130. * 利用NetworkImageView显示网络图片
  131. */
  132. private void showImageByNetworkImageView() {
  133. String imageUrl = "http://d.hiphotos.baidu.com/pic/w%3D310/sign=a00aca825aafa40f3cc6c8dc9b65038c/060828381f30e9246b63e1814c086e061c95f7bf.jpg";
  134. RequestQueue requestQueue = Volley.newRequestQueue(this);
  135. final LruCache<String, Bitmap> lruCache = new LruCache<String, Bitmap>(
  136. 20);
  137. ImageCache imageCache = new ImageCache() {
  138. @Override
  139. public void putBitmap(String key, Bitmap value) {
  140. lruCache.put(key, value);
  141. }
  142. @Override
  143. public Bitmap getBitmap(String key) {
  144. return lruCache.get(key);
  145. }
  146. };
  147. ImageLoader imageLoader = new ImageLoader(requestQueue, imageCache);
  148. mNetworkImageView.setTag("url");
  149. mNetworkImageView.setImageUrl(imageUrl, imageLoader);
  150. }
  151. }

[java] view plaincopy

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. >
  6. <com.android.volley.toolbox.NetworkImageView
  7. android:id="@+id/networkImageView"
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:layout_centerHorizontal="true"
  11. android:layout_marginTop="30dip"
  12. />
  13. <ImageView
  14. android:id="@+id/imageView"
  15. android:layout_width="fill_parent"
  16. android:layout_height="wrap_content"
  17. android:layout_centerInParent="true"
  18. />
  19. </RelativeLayout>

引入Volley非常简单,首先,从git库先克隆一个下来:

git clone https://android.googlesource.com/platform/frameworks/volley

转自:http://www.cnblogs.com/freexiaoyu/p/3446028.html

时间: 2024-08-15 00:27:40

volley 应用 GET POST请求 图片异步加载的相关文章

Android图片异步加载之Android-Universal-Image-Loader

将近一个月没有更新博客了,由于这段时间以来准备毕业论文等各种事务缠身,一直没有时间和精力沉下来继续学习和整理一些东西.最近刚刚恢复到正轨,正好这两天看了下Android上关于图片异步加载的开源项目,就顺便整理记录下来,作为这一个多月来博客的重新开火做饭吧.从今天起我会陆续恢复博客的更新,也希望大家继续支持. 今天要介绍的是Github上一个使用非常广泛的图片异步加载库Android-Universal-Image-Loader,该项目的功能十分强大,可以说是我见过的目前功能最全.性能最优的图片异

Android图片异步加载之Android-Universal-Image-Loader(转)

今天要介绍的是Github上一个使用非常广泛的图片异步加载库Android-Universal-Image-Loader,该项目的功能十分强大,可以说是我见过的目前功能最全.性能最优的图片异步加载解决方案.做Android的同学都知道,Android加载大量图片时,由于系统分配给图片加载的内存大小有限,所以,如果加载图片量非常大的话容易报OOM异常,关于这个异常已经有不少解决方案了,我就不赘述.下面就简要介绍下这个开源项目的主要功能和使用: 一.功能概要 多线程图片加载: 灵活更改ImageLo

Android图片异步加载

原:http://www.cnblogs.com/angeldevil/archive/2012/09/16/2687174.html 相关:https://github.com/nostra13/Android-Universal-Image-Loader 开发Android程序,一般情况下都会有两个操作,图片的异步加载与缓存,而图片的异步加载大都是从网络读取图片(还有生成本地图片缩略图等操作),为了减少网络操作,加快图片加载速度就需要对图片进行缓存,所以网上的好多图片异步加载方法都是与图片的

自己动手写android图片异步加载库(二)

在<自己动手写android图片异步加载库>系列的第一篇文章中,主要是学习了使用ReferenceQueue来实现一个内存缓存.在这篇文章中主要是介绍在下载很多图片是怎么控制线程和队列.在这版代码里,加入信号量和队列,可以控制下载任务的顺序.可以控制暂停和结束. 代码A:ImageLoader.java /** * 图片加载工具类 * * @author qingtian * @blog http://blog.csdn.net/bingoSpunky */ @SuppressLint(&qu

Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)

这个图片异步加载并缓存的类已经被很多开发者所使用,是最常用的几个开源库之一,主流的应用,随便反编译几个火的项目,都可以见到它的身影. 可是有的人并不知道如何去使用这库如何进行配置,网上查到的信息对于刚接触的人来说可能太少了,下面我就把我使用过程中所知道的写了下来,希望可以帮助自己和别人更深入了解这个库的使用和配置. GITHUB上的下载路径为:https://github.com/nostra13/Android-Universal-Image-Loader ,下载最新的库文件,并且导入到项目的

【转】Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)

Android-Universal-Image-Loader 原文地址:http://blog.csdn.net/vipzjyno1/article/details/23206387 这个图片异步加载并缓存的类已经被很多开发者所使用,是最常用的几个开源库之一,主流的应用,随便反编译几个火的项目,都可以见到它的身影. 可是有的人并不知道如何去使用这库如何进行配置,网上查到的信息对于刚接触的人来说可能太少了,下面我就把我使用过程中所知道的写了下来,希望可以帮助自己和别人更深入了解这个库的使用和配置.

Android图片异步加载之Android-Universal-Image-Loader类库的使用

Android开发中我们会经常遇到图片过多或操作不当造成Out of Memory异常,有时虽然是解决了这个问题但却会影响程序的运行效率,例如:当用户在快速滑动滚动条的过程中,我们程序在仍在艰难的加载服务器端的图片,这样给用户造成了极不好的体验.其实网络上关于图片的异步加载和缓存的讲解很多,但是其实,写一个这方面的程序还是比较麻烦的,要考虑多线程,缓存,内存溢出等很多方面,针对这一广大开发者都会遇到的问题,一些牛人们已经帮我们解决了这一问题,今天我为大家介绍一款很流行的开源类库,可以很很好的解决

简单的ListView中item图片异步加载

前言: 在android开发当中,从目标地址获取图片往往都是采用异步加载的方法.当完全加载完图片后在进行显示,也有些是直接将加载的图片一点一点的显示出来. 这两个区别只是对流的处理不同而已.现在就讲讲当图片被完全获取到后在显示的方法. 一,效果图:       初始化:                                                   获取后:                         1.1,效果思路: 初始化的时候默认ImageView显示一张白色的图

Android新浪微博客户端(七)——ListView中的图片异步加载、缓存

原文出自:方杰|http://fangjie.sinaapp.com/?p=193转载请注明出处 最终效果演示:http://fangjie.sinaapp.com/?page_id=54该项目代码已经放到github:https://github.com/JayFang1993/SinaWeibo 一.ListView的图片异步加载 我们都知道对每一个Weibo Item都有用户头像,而且每一条微博还可能带有图片.如果在加载列表的同时加载图片,这样有几个缺点,第一很费事,界面卡住,用户体验很不