初始化类:

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. html的基本结构

    html的基本结构 1.<html>内容</html> html文档的文档标记,也称为html开始标记 这对标记分别位于网页的最前端和最后端,表示开始和结束 2.<hea ...

  2. Linux OpenGL 实践篇-4 坐标系统

    OpenGL中顶点经过顶点着色器后会变为标准设备坐标系.标准设备坐标系的各坐标的取值范围是[-1,1],超过这个范围的点将会被剔除.而这个变换的过程可描述为顶点在几个坐标系统的变换,这几个坐标系统为: ...

  3. [C#]使用 Jenkins 为 .Net Core 实现持续集成/部署

    在前后端分离开发的项目当中为了避免重复构建发布,我们需要部署一个持续发布环境,而目前的开发环境服务器都是基于 CentOS 的,因此每次在本地发布之后还需要打包,上传,部署,十分繁琐.故这里采用了比较 ...

  4. BOM,Dom 回顾

    加给元素: offsetLeft(距离定位父级的距离)/offsetTop(距离定位父级的距离)/offsetWidth(可视宽度)/offHeight(可视高度) clientLeft(左边框宽度) ...

  5. python打包工具distutils、setuptools分析

    在上一篇博文中总结了python中导入包,安装包一条完整的线路.其中有一个有意思的知识点,安装包的方式有很多种,模块和包管理中打包,发布,安装也是值得研究的内容. python中安装包的方式有很多种: ...

  6. ASwipeLayout一个强大的侧滑菜单控件

    Android中侧滑的场景有很大,大部分是基于RecyclerView,但是有些时候你可以动态地addView到一个布局当中,也希望它实现侧滑,所以就产生了ASwipeLayout,该控件不仅支持在R ...

  7. Multipath在OpenStack中的faulty device的成因及解决(part 2)

    | 版权:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.如有问题,可以邮件:wangxu198709@gmail.com 简介 在上次的文章M ...

  8. ●POJ 3378 Crazy Thairs

    题链: http://poj.org/problem?id=3378 题解: 树状数组维护,高精度. 依次考虑以每个位置结尾可以造成的贡献. 假设当前位置为i,为了达到5个元素的要求,我们需要求出,在 ...

  9. ●POJ poj 2112 Optimal Milking

    ●题目大意: 给出K个挤奶机器(编号1~K),C头牛(编号K+1~K+C)(机器和牛各在不同的地方)和每台机器最多可M头牛挤奶: 然后以邻接矩阵告诉各点间的直接距离(不同的地方间若直接距离等于0,则表 ...

  10. ●BZOJ 3831 [Poi2014]Little Bird

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3831 题解: 单调队列优化DP 定义 F[i] 为到达第i课树的疲劳值. 显然最暴力的转移就 ...