初始化类:

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. Menu-菜单组件

    #menu菜单组件 from tkinter import * master=Tk() def callback(): print('你好咯!!') m = Menu(master) m.add_co ...

  2. JavaScript 散集合(HashArray)

    散列表和散列映射是一样的,我们已经在本章中介绍了这种数据结构. 在一些编程语言中,还有一种叫作散列集合的实现.散列集合由一个集合构成,但是插入. 移除或获取元素时,使用的是散列函数.我们可以重用本章中 ...

  3. 解决将/etc/passwd文件中1000改为0后只能guest进入系统的问题 ||ubuntu下将普通用户权限升级为root用户权限的方法;

    其实我现在才知道linux系统对于用户权限管理比较严,在ubuntu下系统不允许root权限的用户进入图像界面系统.由于之前没弄过权限这个东西瞬间掉坑了了. 我是想修改一下root下的nginx.co ...

  4. [LeetCode] Maximum Length of Repeated Subarray 最长的重复子数组

    Given two integer arrays A and B, return the maximum length of an subarray that appears in both arra ...

  5. java--Iterator迭代问题:集合并发访问异常

    用Iterator对数组进行迭代后,如果在迭代过程中对数组进行增加元素操作(这里iterator本身没有提供增加操作方法)时,就会抛出并发访问异常: 异常如下: Exception in thread ...

  6. 树莓派控制HC-SR04超声波模块测距(新手向+C语言向)

    因为作业要求使用c语言代码,这里先附上一段摘自网上的代码 感谢KalaerSun的c语言代码,摘自https://blog.csdn.net/qq_25247589/article/details/6 ...

  7. [HNOI 2016]最小公倍数

    Description 题库链接 给定一张 \(N\) 个顶点 \(M\) 条边的无向图(顶点编号为 \(1,2,\cdots,n\) ),每条边上带有权值.所有权值都可以分解成 \(2^a\time ...

  8. [HNOI 2013]游走

    Description 题库链接 一个无向连通图,顶点从 \(1\) 编号到 \(N\) ,边从 \(1\) 编号到 \(M\) . 小Z在该图上进行随机游走,初始时小Z在 \(1\) 号顶点,每一步 ...

  9. ●BZOJ 2693 jzptab

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2693 题解: 莫比乌斯反演 先看看这个题,BZOJ 2154 Crash的数字表格,本题的升 ...

  10. APIO 2014

    练习赛,评测的时候好像出了些问题,最后我拿自己机子测的212/300,第二题负责评测的写的SPJ就判了第一行的答案,不知道有没出什么问题. T1.palindrome 题目大意:给定一个长度为N的字符 ...