下载网络图片

使用HttpURLConnection下载网络图片
首先设置权限:使用到网络必需要添加权限和要有网络,否则下载失败
DownloadTask2文件
package com.example.administrator.urlapplication;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Environment;
import android.widget.ImageView;
import android.widget.Toast;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

/**
 * Created by Administrator on 2018/3/14.
 */

public class DownloadTask2 extends AsyncTask<String, Integer, Integer> {

    private String dirPath;//下载图片的目录
    private String filePath;//文件存储具体位置
    private Context context;
    private ImageView loadImg;

    public DownloadTask2(Context context, ImageView loadImg) {
        this.context = context;
        this.loadImg = loadImg;
    }

    @Override
    protected Integer doInBackground(String... strings) {
        String fileName = strings[1];//要存储的图片名字

        //判断目录是否存在,若不存在,创建目录
        dirPath = Environment.getExternalStorageDirectory() + "/download_pics/";

        File dir = new File(dirPath);//目录对象
        if (!dir.exists()) {
            dir.mkdir();
        }

        //判断文件是否存在,若不存在,创建文件
        filePath = dirPath + strings[1];
        File file = new File(filePath);//创建文件对象
        if (file.exists()) {
            return -1;
        } else {
            try {
                file.createNewFile();//不存在,就创建出这个文件
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        //定义输入流和输出流对象
        InputStream inputStream = null;
        OutputStream outputStream = null;

        try {
         //创建URL对象
            URL url = new URL(strings[0]);
            //通过URL对象创建HTTP连接
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            if (connection.getResponseCode() == 200) {
                //判断返回码是否正常,若正常创建输入流,否则直接返回
                inputStream = connection.getInputStream();
            } else {
                return -2;
            }
            outputStream = new FileOutputStream(file);//把输出流放入文件里

            int length = 0;
            byte[] buffer = new byte[4 * 1024];//缓冲区
            while ((length = inputStream.read(buffer)) != -1) {
                outputStream.write(buffer, 0, length);
            }
            outputStream.close();
            inputStream.close();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return 1;
    }

    @Override
    protected void onPostExecute(Integer integer) {
        super.onPostExecute(integer);
        switch (integer) {
            case 1:
                //正常下载完成
                Toast.makeText(context, "下载完成", Toast.LENGTH_SHORT).show();
                Bitmap bm = BitmapFactory.decodeFile(filePath);
                loadImg.setImageBitmap(bm);
                break;
            case -1:
                //文件已存在
                Toast.makeText(context, "文件已存在", Toast.LENGTH_SHORT).show();
                break;
            case -2:
                //网络异常
                Toast.makeText(context, "网络异常", Toast.LENGTH_SHORT).show();
                break;
            default:
                break;
        }
    }
}
JiazaiActivity文件
package com.example.administrator.urlapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class JiazaiActivity extends AppCompatActivity {

    private Button loadBtn;
    private ImageView loadImg;
    private String picUrl="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1520919745&di=24fc53f75cf64bac4555f815d9685137&src=http://f3.topitme.com/3/24/4d/1124779522fab4d243o.jpg";

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

        bindID();
        loadBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                DownloadTask2 task=new DownloadTask2(JiazaiActivity.this,loadImg);
                task.execute(picUrl,"lan.jpg");
            }
        });
    }

    private void bindID() {
        loadBtn=findViewById(R.id.load_btn);
        loadImg=findViewById(R.id.load_img);
    }

}

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值