这里只对下载图片做操作,使用工具是AndroidStudio
xUtils3的github网址
https://github.com/wyouflf/xUtils3
1、添加语句
compile 'org.xutils:xutils:3.3.34'
2、添加权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
3、在自己的application中的onCreate方法里
x.Ext.init(this);
4、demo的目录结构
5、布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<TextView
android:id="@+id/tv_download_img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="50dp"
android:text="下载图片"
android:textSize="25sp"/>
<TextView
android:id="@+id/tv_delete_img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="50dp"
android:text="删除图片"
android:textSize="25sp"
/>
</LinearLayout>
6、MyCallBack代码
package com.chen.demo;
import org.xutils.common.Callback;
public class MyCallBack<ResultType> implements Callback.CommonCallback<ResultType> {
@Override
public void onSuccess(ResultType result) {
//根据需求进行请求成功的逻辑处理
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
//根据需求进行请求网络失败的逻辑处理
}
@Override
public void onCancelled(CancelledException cex) {
}
@Override
public void onFinished() {
}
}
7、Util
package com.chen.demo;
import android.content.Context;
import android.os.Environment;
import android.widget.Toast;
import org.xutils.common.Callback;
import org.xutils.http.RequestParams;
import org.xutils.x;
import java.text.SimpleDateFormat;
public class Util {
public static final String IMAGE_SDCARD_MADER = Environment
.getExternalStorageDirectory()
+ "/chen/img/";
/**
* 下载文件
*/
public static <T> Callback.Cancelable DownLoadFile(String url, String filepath, Callback.CommonCallback<T> callback) {
RequestParams params = new RequestParams(url);
//设置断点续传
params.setAutoResume(true);
params.setSaveFilePath(filepath);
Callback.Cancelable cancelable = x.http().get(params, callback);
return cancelable;
}
/**
* 获取声音文件名字
*
* @return 假如当前录制声音时间是2016年6月1日11点30分30秒。得到的文件名字就是20160601113030.这样保证文件名的唯一性
*/
public static String geFileName() {
long getNowTimeLong = System.currentTimeMillis();
SimpleDateFormat time = new SimpleDateFormat("yyyyMMddHHmmss");
String result = time.format(getNowTimeLong);
return result;
}
private static Toast toast;
/**
* 单例吐司
*/
public static void showToast(Context context, String msg) {
if (toast == null) {
toast = Toast.makeText(context, msg, Toast.LENGTH_SHORT);
}
toast.setText(msg);
toast.show();
}
}
8、MainActivity
package com.chen.demo;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.TextView;
import java.io.File;
public class MainActivity extends Activity {
/**
* 下载图片按钮
*/
private TextView tv_download_img;
/**
* 删除图片
*/
private TextView tv_delete_img;
/**
* 文件下载地址
*/
String downloadUrl = "";
/**
* 下载文件的保存位置
*/
String saveFilePath = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
downloadUrl = "http://images-shichai.test.cnfol.com/original/201606/4_1464745054_1.jpg";
saveFilePath = Util.IMAGE_SDCARD_MADER + Util.geFileName() + "chen.png";
tv_download_img = (TextView) findViewById(R.id.tv_download_img);
tv_delete_img = (TextView) findViewById(R.id.tv_delete_img);
tv_download_img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Util.showToast(MainActivity.this, "下载");
downLoadFile();
}
});
tv_delete_img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
File f_delete = new File(saveFilePath);
f_delete.delete();
Util.showToast(MainActivity.this, "图片删除成功");
}
});
}
/**
* 下载文件
*/
private void downLoadFile() {
Util.DownLoadFile(downloadUrl, saveFilePath, new MyCallBack<File>() {
@Override
public void onSuccess(File result) {
super.onSuccess(result);
Util.showToast(MainActivity.this, "下载成功");
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
super.onError(ex, isOnCallback);
Util.showToast(MainActivity.this, "下载失败");
}
});
}
}