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. bash(3):遍历文件

    #!/bin/bash function getdir(){ ` do dir_or_file=$"/"$element if [ -d $dir_or_file ] then g ...

  2. Android 编程下 Managing Your App's Memory

    Managing Your App's Memory Random-access memory (RAM) 在任何软件开发环境中都是宝贵的资源,它在物理内存有限的移动操作系统中更为宝贵.虽然 Andr ...

  3. 死亡之Makefile。。。

    A=Nothing build: @rm -rf build/$(A)/* > /dev/null .PHONY: build 这是一个Makefile..只需要打开终端,在这个Makefile ...

  4. Python模块学习——tempfile

    主要有以下几个函数: tempfile.TemporaryFile 如何你的应用程序需要一个临时文件来存储数据,但不需要同其他程序共享,那么用TemporaryFile函数创建临时文件是最好的选择.其 ...

  5. pip升级Python程序包

    列出当前安装的包: pip list 列出可升级的包: pip list --outdate 升级一个包: pip install --upgrade requests // mac,linux,un ...

  6. 在PL/SQL中调用存储过程--oracle

    在oracle10中写好了存储过程,代码如下: CREATE OR REPLACE Procedure Proc_Insert ( sName in varchar2, sAge in int, sE ...

  7. 【MLE】最大似然估计Maximum Likelihood Estimation

    模型已定,参数未知 已知某个随机样本满足某种概率分布,但是其中具体的参数不清楚,参数估计就是通过若干次试验,观察其结果,利用结果推出参数的大概值.最大似然估计是建立在这样的思想上:已知某个参数能使这个 ...

  8. 固定高度div,随内容自动变高css定义方法

    *{ font-size:12px; margin:0; padding:0;}方法1:#testBox{border:1px solid #cccccc;padding:5px;width:220p ...

  9. 出去html中的标签

    C#写法 public static string StripHTML(string strHtml) { string strOutput = strHtml; Regex regex = new ...

  10. 火狐FireFox看视频不能全屏显示的问题

    问题:最大化/全屏时显示有问题,不能全屏显示,只能看到左上角一部分画面. 解决办法:在画面右键弹出的菜单中选择[设置]——勾选[启用硬件加速].