activity_main.xml 里面什么也没有

AndroidManifest.xml(重点是android:name="com.example.volley.MyApplication")

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.volley"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="18"
android:targetSdkVersion="18" /> <application
android:name="com.example.volley.MyApplication"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application> <uses-permission android:name="android.permission.INTERNET" /> </manifest>

MyApplication

package com.example.volley;

import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley; import android.app.Application; public class MyApplication extends Application {
public static RequestQueue queue; /** 一旦创建就创建RequestQueue请求队列 */
@Override
public void onCreate() {
super.onCreate();
queue = Volley.newRequestQueue(getApplicationContext()); } /** 对外提供静态的方法 */
public static RequestQueue getHttpRequestQueue() {
return queue;
}
}

MainActivity

package com.example.volley;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map; import org.json.JSONObject; import com.android.volley.Request.Method;
import com.android.volley.AuthFailureError;
import com.android.volley.Response;
import com.android.volley.Response.Listener;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.StringRequest; import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast; public class MainActivity extends Activity { /**
* 关联activity。退出之后取消全部的网络请求,释放资源
*/
@Override
protected void onStop() {
super.onStop();
MyApplication.getHttpRequestQueue().cancelAll("abcGet"); }
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// volley_get();
volley_post();
} /**
* get请求方式
*/
private void volley_get() { /**
* String类型
*/
String url = "http://www.imooc.com/api/teacher? type=4&num=30";
StringRequest request = new StringRequest(Method.GET, url,
new Listener<String>() { @Override
public void onResponse(String arg0) {
//返回正确后的操作
Log.e("TAG", ""+arg0);
}
}, new Response.ErrorListener() { @Override
public void onErrorResponse(VolleyError arg0) { }
});
// 设置标签
request.setTag("abcGet");
MyApplication.getHttpRequestQueue().add(request);
MyApplication.getHttpRequestQueue().start(); /**
* JsonObjectRequest类型 由于get參数已经在url写好了,所以传空就可以
*/
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Method.GET,
url, null, new Listener<JSONObject>() { @Override
public void onResponse(JSONObject arg0) {
Toast.makeText(MainActivity.this, arg0.toString(), 0)
.show();
}
}, new Response.ErrorListener() { @Override
public void onErrorResponse(VolleyError arg0) { }
});
// 设置标签
jsonObjectRequest.setTag("bcdGet");
MyApplication.getHttpRequestQueue().add(jsonObjectRequest);
MyApplication.getHttpRequestQueue().start();
/**
* 还有jsonArray方式,这里省略了。。。
*/
} /**
* post请求方式
*/
private void volley_post() {
/**
* StringRequest---post方式
*/
String url = "http://www.imooc.com/api/teacher? ";
StringRequest request = new StringRequest(Method.POST, url,
new Listener<String>() { @Override
public void onResponse(String arg0) {
Log.e("TAG", ""+arg0);
}
}, new Response.ErrorListener() { @Override
public void onErrorResponse(VolleyError arg0) { }
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
//传递參数
Map<String, String> map = new HashMap<String, String>();
map.put("type", "4");
map.put("num", "30");
return map;
}
};
// 设置标签
request.setTag("abcPost");
MyApplication.getHttpRequestQueue().add(request);
MyApplication.getHttpRequestQueue().start();
/**
* jsonObject--post方式
*/
HashMap<String, String> map = new HashMap<String, String>();
map.put("type", "4");
map.put("num", "30");
// 将map转为jsonObject对象
JSONObject object = new JSONObject(map); JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Method.POST, url,
object, new Listener<JSONObject>() { @Override
public void onResponse(JSONObject arg0) {
Log.e("TAG", arg0.toString()); }
}, new Response.ErrorListener() { @Override
public void onErrorResponse(VolleyError arg0) { }
});
// 设置标签
jsonObjectRequest.setTag("bcdPost");
MyApplication.getHttpRequestQueue().add(jsonObjectRequest);
MyApplication.getHttpRequestQueue().start();
}
}

*************************************************下载网络图片**********************************************

AndroidManifest.xml(重点是 android:name="com.example.volleyimagedemo.MyApplication")

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.volleyimagedemo"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="18"
android:targetSdkVersion="18" /> <application
android:name="com.example.volleyimagedemo.MyApplication"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application> <uses-permission android:name="android.permission.INTERNET"/>
</manifest>

activity_main.xml

<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="com.example.volleyimagedemo.MainActivity" > <!-- 方式一 -->
<ImageView
android:id="@+id/imageview1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" /> <!-- 方式二 -->
<ImageView
android:id="@+id/imageview2"
android:layout_width="fill_parent"
android:layout_height="wrap_content" /> <!-- 方式三 -->
<com.android.volley.toolbox.NetworkImageView
android:id="@+id/networkImageview"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</com.android.volley.toolbox.NetworkImageView> </LinearLayout>

MyApplication

package com.example.volleyimagedemo;

import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley; import android.app.Application; public class MyApplication extends Application {
public static RequestQueue queue; @Override
public void onCreate() {
super.onCreate();
queue = Volley.newRequestQueue(getApplicationContext()); } public static RequestQueue getHttpRequestQueue() { return queue;
}
}

BitMapCache

package com.example.volleyimagedemo;

import android.graphics.Bitmap;
import android.util.LruCache; import com.android.volley.toolbox.ImageLoader.ImageCache; public class BitMapCache implements ImageCache{ public LruCache<String, Bitmap> cache;
//超过10兆,自己主动回收
public int max = 10*1024*1024;
public BitMapCache(){
cache = new LruCache<String, Bitmap>(max){
@Override
protected int sizeOf(String key, Bitmap value) {
return value.getRowBytes()*value.getHeight();
}
};
}
@Override
public Bitmap getBitmap(String arg0) {
return cache.get(arg0);
} @Override
public void putBitmap(String arg0, Bitmap arg1) {
cache.put(arg0, arg1);
} }

MainActivity

package com.example.volleyimagedemo;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.os.Bundle;
import android.widget.ImageView; import com.android.volley.Response;
import com.android.volley.Response.Listener;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.ImageLoader.ImageListener;
import com.android.volley.toolbox.ImageRequest;
import com.android.volley.toolbox.NetworkImageView; public class MainActivity extends Activity {
private ImageView imageview1;
private ImageView imageview2;
private NetworkImageView networkImageView; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/** 获取控件、图片url地址 */
imageview1 = (ImageView) findViewById(R.id.imageview1);
imageview2 = (ImageView) findViewById(R.id.imageview2);
networkImageView = (NetworkImageView) findViewById(R.id.networkImageview);
String url = "http://img.mukewang.com/55237dcc0001128c06000338-300-170.jpg"; /**
* 下载图片的另外一种方式ImageLoader+BitMapCache
*/
// imageCache单肚使用是不到缓存效果,须要结合lruCache
ImageLoader imageLoader1 = new ImageLoader(
MyApplication.getHttpRequestQueue(), new BitMapCache());
networkImageView.setDefaultImageResId(R.drawable.ic_launcher);
networkImageView.setErrorImageResId(R.drawable.ic_launcher);
networkImageView.setImageUrl(url, imageLoader1); /**
* 下载图片的第三种种方式
*/
ImageLoader imageLoader2 = new ImageLoader(
MyApplication.getHttpRequestQueue(), new BitMapCache());
// view视图,默认的图片,错误的图片
ImageListener listener = imageLoader1.getImageListener(imageview2,
R.drawable.ic_launcher, R.drawable.ic_launcher);
imageLoader2.get(url, listener); /**
* 下载网络图片的第一种方式ImageRequest
*/
// // 0 是原图的方式载入--Config.RGB_565原图
ImageRequest imageRequest = new ImageRequest(url,
new Listener<Bitmap>() {
//
@Override
public void onResponse(Bitmap arg0) {
imageview1.setImageBitmap(arg0);
}
}, 0, 0, Config.RGB_565, new Response.ErrorListener() { @Override
public void onErrorResponse(VolleyError arg0) {
imageview1
.setBackgroundResource(R.drawable.ic_launcher);
}
}); MyApplication.getHttpRequestQueue().add(imageRequest);
MyApplication.getHttpRequestQueue().start();
} }

Volley的Get、Post方式(JsonObjectRequest、StringRequest)以及Volley获取图片的3种方式的更多相关文章

  1. Spring获取ApplicationContext方式,和读取配置文件获取bean的几种方式

    转自:http://chinazhaokeke.blog.163.com/blog/static/109409055201092811354236  Spring获取ApplicationContex ...

  2. Java基础知识强化之IO流笔记44:IO流练习之 复制图片的 4 种方式案例

    1. 复制图片的 4 种方式案例: 分析: 复制数据,如果我们知道用记事本打开并能够读懂,就用字符流,否则用字节流. 通过该原理,我们知道我们应该采用字节流. 而字节流有4种方式,所以做这个题目我们有 ...

  3. 获取Type的三种方式

    using System;using UnityEngine; public class Type_Test : MonoBehaviour{    private void Awake()    { ...

  4. java动态获取WebService的两种方式(复杂参数类型)

    java动态获取WebService的两种方式(复杂参数类型) 第一种: @Override public OrderSearchListRes searchOrderList(Order_Fligh ...

  5. AngularJS中获取数据源的几种方式

    在AngularJS中,可以从$rootScope中获取数据源,也可以把获取数据的逻辑封装在service中,然后注入到app.run函数中,或者注入到controller中.本篇就来整理获取数据的几 ...

  6. java 获取时间戳的三种方式

      java 获取时间戳的三种方式 CreationTime--2018年7月13日16点29分 Author:Marydon 1.实现方式 方式一:推荐使用 System.currentTimeMi ...

  7. 【Struts2】Struts2获取session的三种方式

    1.Map<String,Object> map =  ActionContext.getContext().getSession(); 2.HttpSession session = S ...

  8. js获取时间戳的三种方式

      js获取时间戳的三种方式 CreateTime--2018年5月23日08:44:10 Author:Marydon // 方式一:推荐使用 var timestamp=new Date().ge ...

  9. Struts2(四.注册时检查用户名是否存在及Action获取数据的三种方式)

    一.功能 1.用户注册页面 <%@ page language="java" contentType="text/html; charset=UTF-8" ...

随机推荐

  1. MySQL load数据的时候自动更新时间

    MySQL load数据的时候自动更新时间 前提 CREATE TABLE table_name ( dt varchar(255) NULL , ctime timestamp NULL ON UP ...

  2. 调整图像的灰度级数C++实现

    图像灰度级数我们见得最多的就是256了,如果想调整它的灰度级数,我们可以使用图像库的imadjust函数来作出调整,比如讲256个灰度级变成2个灰度级(也就是二值图了).再举一个例子,原来一幅256个 ...

  3. 在Mac系统下用STS搭建一个Spring MVC项目

    [本文出自天外归云的博客园] 从STS的下载到空项目的搭建 1. 下载STS,下载解压缩后点击sts-bundle文件夹中的STS文件启动ide: 2. 创建Spring MVC项目:File-> ...

  4. 移动app传统测试流程优化

    [本文出自天外归云的博客园] 概述 在传统的软件测试流程中,每一期需求从开发到上线都要经历从需求分析与评审.测试用例评审.开发.测试.发布的流程.其中测试包含了后台测试.前端web测试.客户端测试.后 ...

  5. Docker考前突击

    dockerfile 介绍 镜像(Image)     容器(Container)     仓库(Repository)

  6. ASP.NET学习笔记(1)——VS自动引入命名空间快捷键

    说明(2017-7-3 22:16:35) 1.在vs的“工具”->“选项”中,左侧树形菜单,“环境”下的“键盘”中设置快捷键. 在“显示命令包含”输入框内输入“显示智能标记”,找到“视图.显示 ...

  7. [转]我的MYSQL学习心得(六) 函数

    这一节主要介绍MYSQL里的函数,MYSQL里的函数很多,我这里主要介绍MYSQL里有而SQLSERVER没有的函数 数学函数 1.求余函数MOD(X,Y) MOD(X,Y)返回x被y除后的余数,MO ...

  8. Redis集群方案<转>

    为什么集群? 通常,为了提高网站响应速度,总是把热点数据保存在内存中而不是直接从后端数据库中读取.Redis是一个很好的Cache工具.大型网站应用,热点数据量往往巨大,几十G上百G是很正常的事儿,在 ...

  9. Ubuntu16.04怎么将桌面左侧的启动器移动到屏幕底部

    与其他 Linux 发行版不同,Ubuntu 多年来一直使用 Unity 做桌面环境,该环境的最突出特点就是桌面左侧有一个启动器栏(Launcher).从 16.04 版本开始,Ubuntu 提供了一 ...

  10. js 获取页面宽度

    特例: 当$(window).width()无效时 /* 出现时机: iframe内嵌子页面在加载过程中取不到$(window).width(),非必现,机率大概1 / 20 */ 可用以下方式获取屏 ...