xUtils 网络模块的使用

在这里我们使用快速生成点击事件的方法:
如何快速生成点击事件 ,这里我们在说一下:


image.png

image.png

image.png

接下来如何使用:

我们看一下布局:
image.png

这里我们使用 1.GET ,2.Post 请求数据 ,3.在服务器上下载文件完成,保存到sd卡中
  1. 首先获取请求的网址,
    2.通过 RequestParams params = new RequestParams(url); 这行代码 把网址添加进来,
    然后 通过 x .http().get ()获取一个Callback对象:

Callback.Cancelable cancelable = x.http().get(params,
new Callback.CommonCallback() {
//重写里面的方法
}
3.在 onSuccess方法中设置数据


image.png

MainActivity中代码:
···

package com.example.wangye.androidmlc_class11;

import android.Manifest;
import android.content.pm.PackageManager;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import org.xutils.common.Callback;
import org.xutils.http.RequestParams;
import org.xutils.image.ImageOptions;
import org.xutils.x;

import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

import butterknife.ButterKnife;
import butterknife.InjectView;
import butterknife.OnClick;

/**

  • Created by wangye on 2018/8/8.
    */

public class MyActivity extends AppCompatActivity {
@InjectView(R.id.button)
Button btGet;
@InjectView(R.id.button1)
Button btPost;
@InjectView(R.id.textView)
TextView tx;
@InjectView(R.id.button2)
Button button3;
@InjectView(R.id.progressBar)
ProgressBar progressBar;
String p[] = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
@InjectView(R.id.imageView)
ImageView imageView;
@InjectView(R.id.button3)
Button btImage;

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
     ButterKnife.inject(this);
    if (Build.VERSION.SDK_INT >= 23) {
        if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
                == PackageManager.PERMISSION_DENIED) {
            requestPermissions(p, 100);
        }
    }
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    if (requestCode == 100) {
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            Toast.makeText(this, "已获取SDCard读取权限", Toast.LENGTH_SHORT).show();
        }
    }
}

@OnClick({R.id.button, R.id.button1, R.id.button2,R.id.button3})
public void onViewClicked(View view) {
    switch (view.getId()) {
        case R.id.button:
            String url = null;
            try {
                url = "http://apicloud.mob.com/v1/weather/query?key=26fd3a8aab7d4&city=" +
                        URLEncoder.encode("通州", "UTF-8") + "&province=" + URLEncoder.encode("北京", "UTF-8");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            RequestParams params = new RequestParams(url);
            Callback.Cancelable cancelable = x.http().get(params,
                    new Callback.CommonCallback() {
                        @Override
                        public void onSuccess(String result) {
                            tx.setText(result);
                        }

                        @Override
                        public void onError(Throwable ex, boolean isOnCallback) {

                        }

                        @Override
                        public void onCancelled(CancelledException cex) {

                        }

                        @Override
                        public void onFinished() {

                        }
                    });
            break;
        case R.id.button1:
            String url1 = "http://apicloud.mob.com/v1/weather/query";
            RequestParams params1 = new RequestParams(url1);
            try {
                params1.addQueryStringParameter("key", URLEncoder.encode("26fd3a8aab7d4", "UTF-8"));
                params1.addQueryStringParameter("city", URLEncoder.encode("通州", "UTF-8"));
                params1.addQueryStringParameter("province", URLEncoder.encode("北京", "UTF-8"));
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }

            Callback.Cancelable cancelable1 = x.http().post(params1,
                    new Callback.CommonCallback() {
                        @Override
                        public void onSuccess(String result) {
                            tx.setText(result);
                        }

                        @Override
                        public void onError(Throwable ex, boolean isOnCallback) {

                        }

                        @Override
                        public void onCancelled(CancelledException cex) {

                        }

                        @Override
                        public void onFinished() {

                        }
                    });
            break;
        case R.id.button2:
            String url2 = "http://p3.so.qhimgs1.com/t0152da6f8976b7b4a3.jpg";
            RequestParams params2 = new RequestParams(url2);
            final File file = new File(
                    Environment.getExternalStorageDirectory() + "/a123.jpg");//在服务器上下载完成,保存到sd卡中

// file.mkdir();

            params2.setSaveFilePath(file.getAbsolutePath());
            params2.setAutoRename(true);
            Callback.Cancelable can = x.http().post(params2,
                    new Callback.ProgressCallback() {
                        @Override
                        public void onSuccess(File result) {
                            imageView.setImageBitmap(
                                    BitmapFactory.decodeFile(file.getAbsolutePath()));
                            Toast.makeText(MyActivity.this, "下载成功", Toast.LENGTH_SHORT).show();
                        }

                        @Override
                        public void onError(Throwable ex, boolean isOnCallback) {
                            Toast.makeText(MyActivity.this, ex.toString(), Toast.LENGTH_SHORT).show();
                        }

                        @Override
                        public void onCancelled(CancelledException cex) {

                        }

                        @Override
                        public void onFinished() {

                        }

                        @Override
                        public void onWaiting() {

                        }

                        @Override
                        public void onStarted() {
                            Toast.makeText(MyActivity.this, "开始下载", Toast.LENGTH_SHORT).show();

                        }

                        @Override
                        public void onLoading(long total, long current, boolean isDownloading) {
                            progressBar.setMax((int) total);
                            progressBar.setProgress((int) current);
                        }
                    });
            break;
    }
}

}

···
效果图:


image.png

image.png

你可能感兴趣的:(xUtils 网络模块的使用)