在这里我们使用快速生成点击事件的方法:
如何快速生成点击事件 ,这里我们在说一下:
接下来如何使用:
这里我们使用 1.GET ,2.Post 请求数据 ,3.在服务器上下载文件完成,保存到sd卡中
- 首先获取请求的网址,
2.通过 RequestParams params = new RequestParams(url); 这行代码 把网址添加进来,
然后 通过 x .http().get ()获取一个Callback对象:
Callback.Cancelable cancelable = x.http().get(params,
new Callback.CommonCallback
//重写里面的方法
}
3.在 onSuccess方法中设置数据
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;
}
}
}
···
效果图: