xUtils3下载图片

这里只对下载图片做操作,使用工具是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, "下载失败");
            }

        });
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值