Volley

package app.jiyun.com.android_day05_volley;


import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;


import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
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 com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;


import java.util.HashMap;
import java.util.Map;


import app.jiyun.com.android_day05_volley.imageurl.ImageUrls;


/**
 * Volley 网络通信框架
 * 完全异步
 * 怎么实现呢
 * 1:因为Volley是并发的跟Handler里面消息机制一样
 *      消息队列管理 消息
 *      RequestQueue 管理 Request(StringRequest,ImageRequest)
 *      最后不要忘记add进去
 *
 * Volley请求图片有三种方式
 * 1:ImageRequest
 * 2:ImageLoader
 * 3:NetWorkImageView
 */
public class MainActivity extends AppCompatActivity implements View.OnClickListener {


    private Button Get_Btn;
    private Button Post_Btn;
    private Button Image_Btn;
    private ImageView get_Image;
    private String mUrl = "http://112.124.22.238:8081/course_api/cniaoplay/featured2?p={%27page%27:0}";
    private String mPostUrl = "http://172.16.45.10:8080/FuWebDemo/AA";
    private TextView mText;
    private NetworkImageView mNet;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }


    private void initView() {
        Get_Btn = (Button) findViewById(R.id.Get_Btn);
        Post_Btn = (Button) findViewById(R.id.Post_Btn);
        Image_Btn = (Button) findViewById(R.id.Image_Btn);
        get_Image = (ImageView) findViewById(R.id.get_Image);
        mText = (TextView) findViewById(R.id.Get_Text);
        Get_Btn.setOnClickListener(this);
        Post_Btn.setOnClickListener(this);
        Image_Btn.setOnClickListener(this);
        mNet = (NetworkImageView) findViewById(R.id.NetImage);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.Get_Btn:
                getInfo();
                break;
            case R.id.Post_Btn:
                postInfo();
                break;
            case R.id.Image_Btn:
//                getImage();
//                getImageLoader();
                getNetImage();
                break;
        }
    }


    //get请求数据
    private void getInfo() {
        RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
        StringRequest stringRequest = new StringRequest(StringRequest.Method.GET, mUrl, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                mText.setText(response + "");
            }
        }, null);
        requestQueue.add(stringRequest);
    }


    //Post请求数据
    private void postInfo() {
        RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
        StringRequest stringRequest = new StringRequest(Request.Method.POST, mPostUrl, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                mText.setText(response);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {


            }
        }) {
            //因为是POST请求,构造方法里面没有参数  他们给封装到了构造方法后边
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> map = new HashMap<String, String>();
                map.put("userName", "lxx");
                map.put("passWord", "123");
                return map;
            }
        };
        requestQueue.add(stringRequest);
    }


    //ImageRequest请求图片
    private void getImage() {
        RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
        //参数1:图片的网址,参数2:成功回调 参数3,4:图片的最大宽和高 参数5:设置图片样式,
        ImageRequest imageRequest = new ImageRequest(ImageUrls.imageUrls[3], new Response.Listener<Bitmap>() {
            @Override
            public void onResponse(Bitmap response) {
                get_Image.setImageBitmap(response);
            }
        }, 0, 0, Bitmap.Config.RGB_565, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {


            }
        });
        requestQueue.add(imageRequest);
    }


    //ImageLoader
    private void getImageLoader() {
        RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
        ImageLoader imageLoader = new ImageLoader(requestQueue, new ImageLoader.ImageCache() {
            @Override
            public Bitmap getBitmap(String url) {
                Log.e("url", url);
                return null;
            }


            @Override
            public void putBitmap(String url, Bitmap bitmap) {
                Log.e("putBitmap", url);
            }
        });
        //设置请求回调  参数1:代表的是回调成功吧图片放到那个组件上,参数2:请求时加载的默认图片,参数3:请求失败的图片
        ImageLoader.ImageListener imageListener = ImageLoader.getImageListener(get_Image, R.mipmap.iv_lol_icon3, R.mipmap.iv_lol_icon14);
        imageLoader.get(ImageUrls.imageUrls[2] + "dsfsdf", imageListener);
    }


    //Volley里面提供一个组件可以用来显示Image  NetWorkImageView
    private void getNetImage() {
        RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
        ImageLoader imageLoader = new ImageLoader(requestQueue, new ImageLoader.ImageCache() {
            @Override
            public Bitmap getBitmap(String url) {
                Log.e("url", url);
                return null;
            }


            @Override
            public void putBitmap(String url, Bitmap bitmap) {
                Log.e("putBitmap", url);
            }
        });
        mNet.setDefaultImageResId(R.mipmap.iv_lol_icon3);
        mNet.setErrorImageResId(R.mipmap.iv_lol_icon14);
        mNet.setImageUrl(ImageUrls.imageUrls[8], imageLoader);
    }

}



package app.jiyun.com.android_day05_volley.imageurl;


/**

 */


public class ImageUrls {


    public final static String[] imageUrls = new String[]{
            "http://img.mukewang.com/54780ea90001f3b406000338.jpg",
            "http://img.mukewang.com/547ed1c9000150cc06000338.jpg",
            "http://img.mukewang.com/54214727000160e306000338.jpg",
            "http://img.mukewang.com/54125edc0001ce6306000338.jpg",
            "http://img.mukewang.com/548165820001b4b006000338.jpg",
            "http://img.mukewang.com/53d74f960001ae9d06000338.jpg",
            "http://img.mukewang.com/547d5a45000156f406000338.jpg",
            "http://img.mukewang.com/549bda090001c53e06000338.jpg",
            "http://img.mukewang.com/530f0ef700019b5906000338.jpg",
            "http://img.mukewang.com/550a87da000168db06000338.jpg",
            "http://img.mukewang.com/550a836c0001236606000338.jpg",
            "http://img.mukewang.com/550a78720001f37a06000338.jpg",
            "http://img.mukewang.com/5513e20600017c1806000338.jpg",
            "http://img.mukewang.com/5513a1b50001752806000338.jpg",
            "http://img.mukewang.com/550a33b00001738a06000338.jpg",
            "http://img.mukewang.com/551380400001da9b06000338.jpg",
            "http://img.mukewang.com/54c87c73000150cf06000338.jpg",
            "http://img.mukewang.com/5518bbe30001c32006000338.jpg",
            "http://img.mukewang.com/5518ecf20001cb4e06000338.jpg",
            "http://img.mukewang.com/551916790001125706000338.jpg",
            "http://img.mukewang.com/550b86560001009406000338.jpg",
            "http://img.mukewang.com/551b98ae0001e57906000338.jpg",
            "http://img.mukewang.com/5518c3d7000175af06000338.jpg",
            "http://img.mukewang.com/551b92340001c9f206000338.jpg",
            "http://img.mukewang.com/552640c300018a9606000338.jpg",
            "http://img.mukewang.com/551de0570001134f06000338.jpg",
            "http://img.mukewang.com/551e470500018dd806000338.jpg",
            "http://img.mukewang.com/5523711700016d1606000338.jpg",
            "http://img.mukewang.com/55249cf30001ae8a06000338.jpg",
            "http://img.mukewang.com/55237dcc0001128c06000338.jpg"
    };
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值