android加载网络图片并缓存,对图片进行点击打开相应链接

来源:互联网 发布:批发零售软件免费 编辑:程序博客网 时间:2024/05/05 18:47

1、原理很简单,就是从网上下载图片数据,将数据转成drawable并加载到指定的imageview

package com.downloadandopenimage; 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.URL; import android.content.Context;import android.content.Intent;import android.graphics.drawable.Drawable;import android.net.Uri;import android.os.AsyncTask;import android.os.Environment;import android.view.View;import android.view.View.OnClickListener;import android.widget.ImageView;import android.widget.ProgressBar; public class LoadAndSaveImage {    ImageView view;    Context mContext;     public LoadAndSaveImage() {        // TODO Auto-generated constructor stub    }     public LoadAndSaveImage(Context context, String str, ImageView view) {        // TODO Auto-generated constructor stub        this.view = view;        mContext = context;        new Load_and_save_image().execute(str);    }     void release() {        File file = new File(file://                + Environment.getExternalStorageDirectory().toString()                + /download_image.jpg);        if (file.exists()) {            boolean deleted = file.delete();        }    }     class Load_and_save_image extends AsyncTask<string, void=""> {         @Override        protected Void doInBackground(String... sUrl) {            // TODO Auto-generated method stub            InputStream input = null;            OutputStream output = null;            HttpURLConnection connection = null;            try {                URL url = new URL(sUrl[0]);                connection = (HttpURLConnection) url.openConnection();                connection.connect();                 // download the file                input = connection.getInputStream();                File checker = new File(file://                        + Environment.getExternalStorageDirectory().toString()                        + /download_image.jpg);                if (checker.exists()) {                    boolean deleted = checker.delete();                }                output = new FileOutputStream(Environment                        .getExternalStorageDirectory().toString()                        + /download_image.jpg);                 byte data[] = new byte[4096];                int count;                while ((count = input.read(data)) != -1) {                    output.write(data, 0, count);                }            } catch (Exception e) {            } finally {                try {                    if (input != null)                        input.close();                    if (output != null) {                        output.close();                    }                } catch (IOException ignored) {                }                 if (connection != null)                    connection.disconnect();            }            return null;        }         protected void onPostExecute(Void result) {            Drawable d = Drawable.createFromPath(Environment                    .getExternalStorageDirectory().toString()                    + /download_image.jpg);            view.setImageDrawable(d);            view.setOnClickListener(new OnClickListener() {                 @Override                public void onClick(View v) {                    // TODO Auto-generated method stub                    Intent intent = new Intent();                    intent.setAction(Intent.ACTION_VIEW);                    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);                    intent.setDataAndType(Uri.parse(file://                            + Environment.getExternalStorageDirectory()                                    .toString() + /download_image.jpg),                            image/*);                    mContext.startActivity(intent);                }            });        };    } }
二、在Activity中获得上述类的对象,并传入三个数据,第一个是当前Context,第二个是URL,第三个是你要显示下载图片的ImageView对象。

0 0
原创粉丝点击