初始化类:

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框架的使用案例的更多相关文章

  1. 安卓高级3 RecyclerView 和cardView使用案例

    cardView: 添加依赖:在Studio搜索cardview即可 在V7包中 或者直接在gradle中添加 compile 'com.android.support:cardview-v7:24. ...

  2. 安卓高级Fresco图片框架的时候

    Fresco:2015FaceBook推出的 及其强大 支持webp图片格式 和渐进式图片加载 中文文档 使用方法 引入依赖 点击查看具体教程 基本使用步骤 在布局中使用其标签 <com.fac ...

  3. 【安卓网络请求开源框架Volley源码解析系列】定制自己的Request请求及Volley框架源码剖析

    通过前面的学习我们已经掌握了Volley的基本用法,没看过的建议大家先去阅读我的博文[安卓网络请求开源框架Volley源码解析系列]初识Volley及其基本用法.如StringRequest用来请求一 ...

  4. 安卓中自定义并使用Volley框架请求网络

    大家好,今天我们讲一下如何使用Volley框架请求网络,为何要使用Volley框架,这就要先说一下使用Volley框架请求网络的优点了,volley是易于定制的,即你可以根据需求来设定volley框架 ...

  5. 使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享

    使用Jquery+EasyUI 进行框架项目开发案例解说之中的一个 员工管理源代码分享 在開始解说之前,我们先来看一下什么是Jquery EasyUI?jQuery EasyUI是一组基于jQuery ...

  6. 使用Jquery+EasyUI 进行框架项目开发案例解说之二---用户管理源代码分享

    使用Jquery+EasyUI 进行框架项目开发案例解说之二 用户管理源代码分享  在上一篇文章<使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享> ...

  7. Android Volley框架的使用(1)

    在Android开发中,经常要通过HTTP请求访问网络.为了使通过HTTP请求访问网络的过程更加简单,2013年提出了新的HTTP通信框架--Volley.Volley使用起来非常简单,适用于网络访问 ...

  8. spring框架和junit框架结合使用案例

    package ltssh; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.be ...

  9. 技术文档--volley 框架

    Volley 框架 参考文档:http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f73e7e808c027fa ...

随机推荐

  1. angularjs1.x版本,父子组件之间的双向绑定

    今天遇到了一个angularjs的坑, ng-repeat和ng-if会改变他所包含的html中绑定变量的作用域. angularjs自定义指令,可以定义四种变量,通过 =,@,&双向绑定,单 ...

  2. C#生成MD5码

    /// <summary> /// 获取文件的MD5码 /// </summary> /// <param name="fileName">传入 ...

  3. tmux 终端复用详解

    tmux是什么 我们在linux服务器上的工作一般都是通过一个远程的终端连接软件连接到远端系统进行操作,例如使用xshell或者SecureCRT工具通过ssh进行远程连接.在使用过程中,如果要做比较 ...

  4. [ZJOI 2010]base 基站选址

    Description 题库链接 给出 \(n\) 个村庄的横坐标 \(D_i\) .要求在这 \(n\) 个村庄内最多选择 \(m\) 个作为通讯基站,在村庄 \(i\) 建造通讯基站的代价为 \( ...

  5. ●HDU 1695 GCD

    题链: http://acm.hdu.edu.cn/showproblem.php?pid=1695 题解: 容斥. 莫比乌斯反演,入门题. 问题化简:求满足x∈(1~n)和y∈(1~m),且gcd( ...

  6. ●BZOJ 1069 [SCOI2007]最大土地面积

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=1069 题解: 计算几何,凸包,旋转卡壳 其实和这个题差不多,POJ 2079 Triangl ...

  7. bzoj3038上帝造题的七分钟2

    3038: 上帝造题的七分钟2 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 1679  Solved: 713[Submit][Status][Dis ...

  8. TOJ 数据结构实验--静态顺序栈

    描述 创建一个顺序栈(静态),栈大小为5.能够完成栈的初始化.入栈.出栈.获取栈顶元素.销毁栈等操作. 顺序栈类型定义如下: typedef struct {  int data[Max];    i ...

  9. 笔记12 注入AspectJ切面

    虽然Spring AOP能够满足许多应用的切面需求,但是与AspectJ相比, Spring AOP 是一个功能比较弱的AOP解决方案.AspectJ提供了Spring AOP所不能支持的许多类型的切 ...

  10. Hinton's paper Dynamic Routing Between Capsules 的 Tensorflow , Keras ,Pytorch实现

    Tensorflow 实现 A Tensorflow implementation of CapsNet(Capsules Net) in Hinton's paper Dynamic Routing ...