版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】Android开源:网络框架volley使用(一)使用方法笔记
1.Get方法获取字符串:
public
void
loadGetJson(String
url)
{
//创建RequestQueue对象,一个activity创建一个对象即可
RequestQueue
mQueue
=
Volley.newRequestQueue(getApplicationContext());
//创建get方法的json请求对象
StringRequest
sr
=
new
StringRequest(url,
new
Listener<String>()
{
@Override
public
void
onResponse(String
response)
{
Log.e("onResponse",
""
+
response);
}
},
new
ErrorListener()
{
@Override
public
void
onErrorResponse(VolleyError
error)
{
Log.e("onErrorResponse",
""
+
error.toString());
}
});
//将请求对象加入到请求队列里
mQueue.add(sr);
}2.指定get或者post方法获取字符串(1)get方法RequestQueue
requestQueue
=
Volley.newRequestQueue(this);
StringRequest
sRequest=new
StringRequest(Request.Method.GET,CITY_CODE_URL,
new
Listener<String>()
{
@Override
public
void
onResponse(String
response)
{
System.out.println(response);
}
},
new
Response.ErrorListener()
{
@Override
public
void
onErrorResponse(VolleyError
arg0)
{
System.out.println("sorry,Error");
}
});
sRequest.setShouldCache(false);
requestQueue.add(sRequest);(2)post方法StringRequest中并没有提供设置POST参数的方法,但是当发出POST请求的时候,Volley会尝试调用StringRequest的父类——Request中的getParams()方法来获取POST参数,那么解决方法自然也就有了,我们只需要在StringRequest的匿名类中重写getParams()方法,在这里设置POST参数就可以了,代码如下所示:StringRequest
stringRequest
=
new
StringRequest(Method.POST,
url,
listener,
errorListener)
{
@Override
protected
Map<String,
String>
getParams()
throws
AuthFailureError
{
Map<String,
String>
map
=
new
HashMap<String,
String>();
map.put("params1",
"value1");
map.put("params2",
"value2");
return
map;
}
};完整范例如下:
public
void
loadPostLogin(String
url)
{
RequestQueue
mQueue
=
Volley.newRequestQueue(getApplicationContext());
StringRequest
sr
=
new
StringRequest(Request.Method.POST,
url,
new
Listener<String>()
{
@Override
public
void
onResponse(String
response)
{
Log.e("onResponse",
""
+
response);
}
},
new
ErrorListener()
{
@Override
public
void
onErrorResponse(VolleyError
error)
{
Log.e("onErrorResponse",
""
+
error.toString());
}
})
{
@Override
protected
Map<String,
String>
getParams()
throws
AuthFailureError
{
Map<String,
String>
map
=
new
HashMap<String,
String>();
map.put("UserName",
"glblong");
map.put("PassWord",
"123456");
return
map;
}
};
mQueue.add(sr);
}3.JsonObjectRequest和JsonArrayRequest用法与StringRequest一致,方法如下:第二个参数说明:ConstructorwhichdefaultstoGETifjsonRequestisnull,POSTotherwise.默认情况下设成null为get方法,否则为post方法。
JsonObjectRequest
jsonObjectRequest
=
new
JsonObjectRequest(url,
null,
new
Response.Listener<JSONObject>()
{
@Override
public
void
onResponse(JSONObject
response)
{
Log.d("TAG",
response.toString());
}
},
new
Response.ErrorListener()
{
@Override
public
void
onErrorResponse(VolleyError
error)
{
Log.e("TAG",
error.getMessage(),
error);
}
});4.ImageRequest用法
/**
*
第三第四个参数分别用于指定允许图片最大的宽度和高度,如果指定的网络图片的宽度或高度大于这里的最大值,则会对图片进行压缩,
*
指定成0的话就表示不管图片有多大,都不会进行压缩。
*
*
@param
url
*
图片地址
*
@param
listener
*
@param
maxWidth
*
指定允许图片最大的宽度
*
@param
maxHeight
*
指定允许图片最大的高度
*
@param
decodeConfig
*
指定图片的颜色属性,Bitmap.Config下的几个常量.
*
@param
errorListener
*/
public
void
getImgRequest(final
ImageView
iv,
String
url)
{
RequestQueue
queue
=
Volley.newRequestQueue(getApplicationContext());
ImageRequest
ir
=
new
ImageRequest(url,
new
Listener<Bitmap>()
{
public
void
onResponse(Bitmap
response)
{
iv.setImageBitmap(response);
};
},
0,
0,
Config.RGB_565,
new
ErrorListener()
{
@Override
public
void
onErrorResponse(VolleyError
error)
{
//
TODO
Auto-generated
method
stub
}
});
queue.add(ir);
}5.
ImageLoader用法ImageLoader比ImageRequest更加高效,因为它不仅对图片进行缓存,还可以过滤掉重复的链接,避免重复发送请求。
//1.创建RequestQueue实例
RequestQueue
queue
=
Volley.newRequestQueue(getApplicationContext());
//2.创建ImageLoader实例,ImageCache需要重写才能实现缓存
ImageLoader
il
=
new
ImageLoader(queue,
new
ImageCache()
{
@Override
public
void
putBitmap(String
url,
Bitmap
bitmap)
{
//
TODO
Auto-generated
method
stub
}
@Override
public
Bitmap
getBitmap(String
url)
{
//
TODO
Auto-generated
method
stub
return
null;
}
});
//3.创建ImageListener实例,设置默认图片和加载失败图片
ImageListener
listener
=
ImageLoader.getImageListener(iv,
R.drawable.img_loading,
R.drawable.img_failed);
//4.通过get方法加载图片
il.get(url,
listener);使用范例代码如下:(1)先实现ImageCache接口import
android.graphics.Bitmap;
import
android.support.v4.util.LruCache;
import
com.android.volley.toolbox.ImageLoader.ImageCache;
public
class
ImageLoaderCache
implements
ImageCache
{
private
LruCache<String,
Bitmap>
mCache;
public
ImageLoaderCache()
{
int
maxSize
=
10
*
1024
*
1024;//设置缓存图片的大小为10M
mCache
=
new
LruCache<String,
Bitmap>(maxSize)
{
@Override
protected
int
sizeOf(String
key,
Bitmap
bitmap)
{
return
bitmap.getRowBytes()
*
bitmap.getHeight();
}
};
}
@Override
public
Bitmap
getBitmap(String
url)
{
return
mCache.get(url);
}
@Override
public
void
putBitmap(String
url,
Bitmap
bitmap)
{
mCache.put(url,
bitmap);
}
}(2)使用方法如下:
public
void
getImgLoader(ImageView
iv,String
url)
{
RequestQueue
queue
=
Volley.newRequestQueue(getApplicationContext());
ImageLoader
il
=
new
ImageLoader(queue,
new
ImageLoaderCache());
ImageListener
listener
=
ImageLoader.getImageListener(iv,
R.drawable.img_loading,
R.drawable.img_failed);
//加载并限定图片宽度和高度
il.get(url,
listener,
200,
300);
}6.NetworkImageView的用法NetworkImageView在加载图片的时候会自动获取自身控件的宽高,然后对比网络图片的宽度,再决定是否需要对图片进行压缩。也就是说,压缩过程是在内部完全自动化的,并不需要我们关心,NetworkImageView会始终呈现给我们一张大小刚刚好的网络图片,不会多占用任何一点内存。如果不想对图片进行压缩的话,只需要在布局文件中把NetworkImageView的layout_width和layout_height都设置成wrap_content就可以了,这样NetworkImageView就会将该图片的原始大小展示出来,不会进行任何压缩。(1)布局文件中添加NetworkImageView控件
<com.android.volley.toolbox.NetworkImageView
android:id="@+id/networkImageView1"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_centerHorizontal="true"
android:layout_marginTop="60dp"
andr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年养殖员初级工工勤技能考试题库
- 儿科护理培训计划
- 孕产期保健正式版
- 26年中国用药匹配规范解读
- 门诊护理查房中的心理护理
- 食管异物与吞咽困难的护理
- 胃癌护理中的创新方法
- 肿瘤晚期患者家属心理支持
- 营造安全护理环境的重要性
- 臀位分娩的并发症预防
- 雨课堂学堂在线学堂云《自然辩证法概论( 武汉科技大)》单元测试考核答案
- 市场营销学(山东大学)智慧树知到期末考试答案章节答案2024年山东大学(威海)
- pwm控制的单相逆变电源系统设计LC滤波电路
- 锦州新兴橡胶制品有限公司清洁生产审核评估与验收报告
- 2022年10月上海申康医疗卫生建设工程公共服务中心招考3名工作人员2笔试参考题库含答案解析
- GB/T 7631.12-2014润滑剂、工业用油和有关产品(L类)的分类第12部分:Q组(有机热载体)
- 硅片加工硅片清洗课件
- 挡墙人工挖孔桩安全专项施工方案专家论证
- 二年级上册心理健康课件-我的情绪我做主 全国通用(共19张PPT)
- 完整word版,“吕氏八字命理学”高级理论
- 看台膜结构施工
评论
0/150
提交评论