安卓高级2 Volley框架的使用案例
初始化类:
MyApp.java
package qianfeng.com.day37_volley_pull.app;
import android.app.Application;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;
/**
* Created by ${Mr.Zhao} on 2016/10/18.
*/
public class MyApp extends Application {
//定义一个 请求队列
private static RequestQueue requestQueue;
@Override
public void onCreate() {
super.onCreate();
// 初始化 请求队列
requestQueue = Volley.newRequestQueue(this);
}
// 将消息队列返回
public static RequestQueue getRequestQueue() {
return requestQueue;
}
}
零散并发下载字符数据
package qianfeng.com.day37_volley_pull;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.StringRequest;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
import qianfeng.com.day37_volley_pull.app.MyApp;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onClick(View view) {
switch (view.getId()) {
case R.id.volley_get_bt:
String path = "http://c.m.163.com/nc/article/list/T1370583240249/0-20.html";
// 定义 一次请求
/*
1. 请求方式
2.路径
3.请求成功的回调监听
4.请求错误的时候 回调监听
*/
StringRequest stringRequest = new StringRequest(Request.Method.GET, path, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("Mr.Zhao", "onResponse: " + response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("Mr.Zhao", "onErrorResponse: ");
}
});
// 将 这个请求 添加到 请求队列中!!!!!!
MyApp.getRequestQueue().add(stringRequest);
break;
case R.id.volley_post_bt:
String post_Path = "http://mrobot.pcauto.com.cn/v2/cms/channels/1?";
StringRequest request = new StringRequest(Request.Method.POST, post_Path, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("Mr.Zhao", "onResponse: " + response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("Mr.Zhao", "onErrorResponse: " + error);
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> map = new HashMap<>();
map.put("pageNo", "1");
map.put("pageSize", "20");
map.put("serialIds", "2143,3404");
map.put("v", "4.0.0");
return map;
}
};
MyApp.getRequestQueue().add(request);
break;
case R.id.volley_object_bt:
String object_path = "http://mrobot.pcauto.com.cn/v2/cms/channels/1?";
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, object_path, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("Mr.Zhao", "onResponse: " + response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> map = new HashMap<>();
map.put("pageNo", "1");
map.put("pageSize", "20");
map.put("serialIds", "2143,3404");
map.put("v", "4.0.0");
return map;
}
};
jsonObjectRequest.setTag("object");
MyApp.getRequestQueue().add(jsonObjectRequest);
break;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
// 取消标记为 object 的 所有的请求
MyApp.getRequestQueue().cancelAll("object");
}
}
零散并发下载图片:
package qianfeng.com.day37_volley_pull;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v4.util.LruCache;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.ImageRequest;
import com.android.volley.toolbox.NetworkImageView;
import qianfeng.com.day37_volley_pull.app.MyApp;
public class ImageActivity extends AppCompatActivity {
private ImageView show_iv;
//2 使用缓存 Loader的方式加载图片
//2.1 定义一个LruCache
LruCache<String, Bitmap> lru;
ImageLoader loader;
private NetworkImageView netImageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image);
show_iv = (ImageView) findViewById(R.id.show_iv);
initLoaderImage();
//3. 使用 Volley框架 提供的 NetWorkImageView 来加载一张图片
netImageView = (NetworkImageView) findViewById(R.id.netImageView);
netImageView.setDefaultImageResId(R.mipmap.ic_launcher);
// 3.1 加载图片 需要 先 初始化 ImageLoader
netImageView.setImageUrl("http://img5.duitang.com/uploads/item/201511/02/20151102010720_yXnhP.thumb.224_0.jpeg",loader);
}
// s使用Loader 加载图片的方式
private void initLoaderImage() {
//2.2 实例化Lru
int size = (int) (Runtime.getRuntime().maxMemory() / 8);
lru = new LruCache<String, Bitmap>(size) {
@Override
protected int sizeOf(String key, Bitmap value) {
return value.getByteCount();
}
};
//2.3 实例化一个Loader
loader = new ImageLoader(MyApp.getRequestQueue(), new ImageLoader.ImageCache() {
@Override
public Bitmap getBitmap(String url) {
return lru.get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
lru.put(url, bitmap);
}
});
}
//1. 使用请求的方式加载图片
public void onClick(View view) {
String path = "http://imgsrc.baidu.com/baike/pic/item/dcc451da81cb39db1a2e7b6ed5160924ab18301f.jpg";
ImageRequest request = new ImageRequest(path, new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap response) {
if (response != null)
show_iv.setImageBitmap(response);
else
Toast.makeText(ImageActivity.this, "没图片", Toast.LENGTH_SHORT).show();
}
}, LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, Bitmap.Config.RGB_565, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
MyApp.getRequestQueue().add(request);
}
//2.3 加载图片
public void loaderImage(View view) {
String imagePath = "http://tupian.enterdesk.com/2013/mxy/10/12/3/5.jpg";
// 获取监听器
ImageLoader.ImageListener listener = loader.getImageListener(show_iv, R.mipmap.ic_launcher, R.mipmap.ic_launcher);
// 获取图片
loader.get(imagePath, listener);
}
}
零散并发下载图片对应布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="qianfeng.com.day37_volley_pull.ImageActivity">
<Button
android:id="@+id/image_bt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="获取网络图片" />
<Button
android:id="@+id/loader_bt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="loaderImage"
android:text="Loader" />
<ImageView
android:id="@+id/show_iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<com.android.volley.toolbox.NetworkImageView
android:id="@+id/netImageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
安卓高级2 Volley框架的使用案例的更多相关文章
- 安卓高级3 RecyclerView 和cardView使用案例
cardView: 添加依赖:在Studio搜索cardview即可 在V7包中 或者直接在gradle中添加 compile 'com.android.support:cardview-v7:24. ...
- 安卓高级Fresco图片框架的时候
Fresco:2015FaceBook推出的 及其强大 支持webp图片格式 和渐进式图片加载 中文文档 使用方法 引入依赖 点击查看具体教程 基本使用步骤 在布局中使用其标签 <com.fac ...
- 【安卓网络请求开源框架Volley源码解析系列】定制自己的Request请求及Volley框架源码剖析
通过前面的学习我们已经掌握了Volley的基本用法,没看过的建议大家先去阅读我的博文[安卓网络请求开源框架Volley源码解析系列]初识Volley及其基本用法.如StringRequest用来请求一 ...
- 安卓中自定义并使用Volley框架请求网络
大家好,今天我们讲一下如何使用Volley框架请求网络,为何要使用Volley框架,这就要先说一下使用Volley框架请求网络的优点了,volley是易于定制的,即你可以根据需求来设定volley框架 ...
- 使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享
使用Jquery+EasyUI 进行框架项目开发案例解说之中的一个 员工管理源代码分享 在開始解说之前,我们先来看一下什么是Jquery EasyUI?jQuery EasyUI是一组基于jQuery ...
- 使用Jquery+EasyUI 进行框架项目开发案例解说之二---用户管理源代码分享
使用Jquery+EasyUI 进行框架项目开发案例解说之二 用户管理源代码分享 在上一篇文章<使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享> ...
- Android Volley框架的使用(1)
在Android开发中,经常要通过HTTP请求访问网络.为了使通过HTTP请求访问网络的过程更加简单,2013年提出了新的HTTP通信框架--Volley.Volley使用起来非常简单,适用于网络访问 ...
- spring框架和junit框架结合使用案例
package ltssh; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.be ...
- 技术文档--volley 框架
Volley 框架 参考文档:http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f73e7e808c027fa ...
随机推荐
- Text-鼠标点击事件
from tkinter import * import webbrowser master=Tk() text=Text(master,width=50,height=20) text.pack() ...
- 【转】操作系统 gdt ldt
GDT的由来: 在Protected Mode下,一个重要的必不可少的数据结构就是GDT(Global Descriptor Table). 为什么要有GDT?我们首先考虑一下在Real Mo ...
- NoClassDefFoundError && ClassNotFoundException
两种错误都是涉及类加载问题,类层次结构如下: NoClassDefFoundError是系统错误,ClassNotFoundException是系统异常,可以捕获. NoClassDefFoundEr ...
- C#在使用Assembly加载程序集时失败
错误现象: 进行插件读取时出现错误:"尝试从一个网络位置加载程序集,在早期版本的 .NET Framework 中,这会导致对该程序集进行沙盒处理.此发行版的 .NET Framework ...
- ubuntu安装 tar.gz格式程序
tar.gz(bz或bz2等) 一.安装1.打开一个SHELL,即终端2.用cd 命令进入源代码压缩包所在的目录3.根据压缩包类型解压缩文件(*代表压缩包名称)tar -zxvf ****.tar.g ...
- 在iview的Table中添加Select(render)
首先对Render进行分析,在iview官方的文档中,找到了table插入Button的例子: { title: 'Action', key: 'action', width: 150, align: ...
- seacms6.5 注入漏洞1
---恢复内容开始--- 需要开启/data/admin/isapi.txt ,当里面的数值为1时,就可以报错注入 存在漏洞的页面:zyapi.php function cj() { global ...
- Docker入门之--定制镜像
1. 首先定制一个Web 服务器为例 1.1 启动镜像 执行下面命令 docker run --name webserver -d -p 80:80 nginx 1.2 查看容器和镜像状态 然后执行下 ...
- [JSOI 2008]星球大战starwar
Description 题库链接 给你一张 \(n\) 点, \(m\) 条边的无向图,每次摧毁一个点,问你剩下几个联通块. \(1\leq n\leq 2m,1\leq m\leq 200000\) ...
- [HNOI 2003]消防局的设立
Description 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地.起初为了节约材料,人类只修建了n-1条道路来 连接这些基地,并且每两个基地都能够通过道路到达,所以所有的基地形成 ...