• Volley的Get、Post方式(JsonObjectRequest、StringRequest)以及Volley获取图片的3种方式


    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();
    	}
    
    }
    



  • 相关阅读:
    AD用户移除所属组
    Mysql中文乱码问题完美解决方案
    将sqllite3数据库迁移到mysql
    检查远端服务器端口是否打开
    远程桌面卡
    不同平台的线程并发接口对比
    stm32之中断配置
    stm32之CMSIS标准、库目录、GPIO
    stm32 中断几个库函数实现过程分析
    Tree命令使用
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/7401107.html
Copyright © 2020-2023  润新知