在文件里设置一个点击方法已进行点击下载:

download.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {        String filePath = imageInfo.get(currentItem).getBigImageUrl();        ImgDonwload.donwloadImg(ImageActivity.this,filePath);    }});

下面是ImgDonwload.java图片下载工具类:

package com.vimi8.app.utils.imagesUtils;import android.app.ProgressDialog;import android.content.Context;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.net.Uri;import android.os.Environment;import android.os.Handler;import android.os.Message;import android.util.Log;import android.widget.Toast;import java.io.BufferedOutputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import java.util.UUID;/** * Created by vimi8 on 2017/6/9. */public class ImgDonwload {    private static String filePath;    private static Bitmap mBitmap;    private static String mFileName="为米老乡";    private static String mSaveMessage;    private final static String TAG = "ImageActivity";    private static Context context;    private static ProgressDialog mSaveDialog = null;    public static void donwloadImg(Context contexts,String filePaths){        context = contexts;        filePath = filePaths;        mSaveDialog = ProgressDialog.show(context, "保存图片", "图片正在保存中,请稍等...", true);        new Thread(saveFileRunnable).start();    }    private static Runnable saveFileRunnable = new Runnable(){        @Override        public void run() {            try {                byte[] data = getImage(filePath);                if(data!=null){                    mBitmap = BitmapFactory.decodeByteArray(data, 0, data.length);// bitmap                }else{                    Toast.makeText(context, "Image error!", Toast.LENGTH_LONG).show();                }                saveFile(mBitmap, mFileName);                mSaveMessage = "图片保存成功!";            } catch (IOException e) {                mSaveMessage = "图片保存失败!";                e.printStackTrace();            } catch (Exception e) {                e.printStackTrace();            }            messageHandler.sendMessage(messageHandler.obtainMessage());        }    };    private static Handler messageHandler = new Handler() {        @Override        public void handleMessage(Message msg) {            mSaveDialog.dismiss();            Log.d(TAG, mSaveMessage);            Toast.makeText(context, mSaveMessage, Toast.LENGTH_SHORT).show();        }    };    /**     * Get image from newwork     * @param path The path of image     * @return byte[]     * @throws Exception     */    public static byte[] getImage(String path) throws Exception{        URL url = new URL(path);        HttpURLConnection conn = (HttpURLConnection) url.openConnection();        conn.setConnectTimeout(5 * 1000);        conn.setRequestMethod("GET");        InputStream inStream = conn.getInputStream();        if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){            return readStream(inStream);        }        return null;    }    /**     * Get data from stream     * @param inStream     * @return byte[]     * @throws Exception     */    public static byte[] readStream(InputStream inStream) throws Exception{        ByteArrayOutputStream outStream = new ByteArrayOutputStream();        byte[] buffer = new byte[1024];        int len = 0;        while( (len=inStream.read(buffer)) != -1){            outStream.write(buffer, 0, len);        }        outStream.close();        inStream.close();        return outStream.toByteArray();    }    /**     * 保存文件     * @param bm     * @param fileName     * @throws IOException     */    public static void saveFile(Bitmap bm, String fileName) throws IOException {        File dirFile = new File(Environment.getExternalStorageDirectory().getPath());        if(!dirFile.exists()){            dirFile.mkdir();        }        fileName = UUID.randomUUID().toString()+".jpg";        File jia=new File(Environment.getExternalStorageDirectory().getPath() +"/DCIM/VIMI8");        if(!jia.exists()){   //判断文件夹是否存在,不存在则创建            jia.mkdirs();        }        File myCaptureFile = new File(jia +"/"+ fileName);        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile));        bm.compress(Bitmap.CompressFormat.JPEG, 80, bos);        bos.flush();        bos.close();        //把图片保存后声明这个广播事件通知系统相册有新图片到来        Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);        Uri uri = Uri.fromFile(myCaptureFile);        intent.setData(uri);        context.sendBroadcast(intent);    }}

以上是取得的是byte数组, 从byte数组生成bitmap



以下是取得的是InputStream,直接从InputStream生成bitmap

package com.vimi8.app.utils.imagesUtils;import android.app.ProgressDialog;import android.content.Context;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.net.Uri;import android.os.Environment;import android.os.Handler;import android.os.Message;import android.util.Log;import android.widget.Toast;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import java.util.UUID;/** * Created by vimi8 on 2017/6/9. */public class ImgDonwloads {    private static String filePath;    private static Bitmap mBitmap;    private static String mFileName="为米老乡";    private static String mSaveMessage;    private final static String TAG = "ImageActivity";    private static Context context;    private static ProgressDialog mSaveDialog = null;    public static void donwloadImg(Context contexts,String filePaths){        context = contexts;        filePath = filePaths;        mSaveDialog = ProgressDialog.show(context, "保存图片", "图片正在保存中,请稍等...", true);        new Thread(saveFileRunnable).start();    }    private static Runnable saveFileRunnable = new Runnable(){        @Override        public void run() {            try {                mBitmap = BitmapFactory.decodeStream(getImageStream(filePath));                saveFile(mBitmap, mFileName);                mSaveMessage = "图片保存成功!";            } catch (IOException e) {                mSaveMessage = "图片保存失败!";                e.printStackTrace();            } catch (Exception e) {                e.printStackTrace();            }            messageHandler.sendMessage(messageHandler.obtainMessage());        }    };    private static Handler messageHandler = new Handler() {        @Override        public void handleMessage(Message msg) {            mSaveDialog.dismiss();            Log.d(TAG, mSaveMessage);            Toast.makeText(context, mSaveMessage, Toast.LENGTH_SHORT).show();        }    };    /**     * Get image from newwork     * @param path The path of image     * @return InputStream     * @throws Exception     */    public static InputStream getImageStream(String path) throws Exception{        URL url = new URL(path);        HttpURLConnection conn = (HttpURLConnection) url.openConnection();        conn.setConnectTimeout(5 * 1000);        conn.setRequestMethod("GET");        if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){            return conn.getInputStream();        }        return null;    }    /**     * 保存文件     * @param bm     * @param fileName     * @throws IOException     */    public static void saveFile(Bitmap bm, String fileName) throws IOException {        File dirFile = new File(Environment.getExternalStorageDirectory().getPath());        if(!dirFile.exists()){            dirFile.mkdir();        }        fileName = UUID.randomUUID().toString()+".jpg";        File myCaptureFile = new File(Environment.getExternalStorageDirectory().getPath() +"/DCIM/Camera/"+ fileName);        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile));        bm.compress(Bitmap.CompressFormat.JPEG, 80, bos);        bos.flush();        bos.close();        //把图片保存后声明这个广播事件通知系统相册有新图片到来        Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);        Uri uri = Uri.fromFile(myCaptureFile);        intent.setData(uri);        context.sendBroadcast(intent);    }}




更多相关文章

  1. android中实现从相册中一次性获取多张图片与拍照,并将选中的图片
  2. EditText插入表情图片
  3. android操作sqlite3的blob字段,显示数据中的图片
  4. android 获取SD卡的图片及其路径
  5. Android:读取本地相册与相机获取图片上传到服务器(用字符串的形式
  6. Android 图片缩放与旋转的实现详解
  7. 图片的放大缩小
  8. 关于android 调用系统图片浏览器并返回图片路径问题

随机推荐

  1. 在Android中如何让gif动起来
  2. 设置 TextView 文字居中
  3. Android(安卓)NDK开发:HelloNDK
  4. android 和 lucene
  5. [android]布局(容器)简介和使用方法
  6. Android(安卓)列表按照时间排序
  7. android按屏幕大小动态确定控件位置及大
  8. android中如何处理cookie
  9. android 静音与振动
  10. Android类加载器源码分析