从网络加载图片

package visizen.com.imageviewer;

import android.app.Activity;
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.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

public class MainActivity extends AppCompatActivity {

    public static final int HTTPSTATUSERROR = 1;//返回状态不正确
    private static final int URLERROR = 2;//不能创建URL
    private static final int SETIMG = 3;//设置缓存图片
    EditText et;

    ImageView imageView;
    public static final int IMAGEURLEMPTY=0;//图片地址不能为空!

    File file;

    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what){
                case MainActivity.IMAGEURLEMPTY:
                    Toast.makeText(MainActivity.this,"图片地址不能为空!",Toast.LENGTH_LONG).show();
                    break;
                case MainActivity.HTTPSTATUSERROR:
                    Toast.makeText(MainActivity.this,"返回状态不正确!",Toast.LENGTH_LONG).show();
                    break;
                case MainActivity.URLERROR:
                    Toast.makeText(MainActivity.this,"不能创建URL!",Toast.LENGTH_LONG).show();
                    break;
                case MainActivity.SETIMG:
                    imageView.setImageURI(Uri.fromFile(file));
                    et.setText("vvvvvvvvvv");
                    break;
            }
        }
    };

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


        imageView = (ImageView) findViewById(R.id.imageView);
    }

    public void ViewImage(View view) {

        new Thread(new Runnable() {
            @Override
            public void run() {
                et = (EditText) MainActivity.this.findViewById(R.id.editText);

                String path = et.getText().toString().trim();

                if (TextUtils.isEmpty(path)) {
                    Message msg = new Message();
                    msg.what=IMAGEURLEMPTY;
                    MainActivity.this.handler.sendMessage(msg);
                    return;
                }

                int start = path.lastIndexOf("/");

                file = new File(Environment.getExternalStorageDirectory(),path.substring(start + 1));
                if(file.exists()&&file.length()>0){
                    Message msg = new Message();
                    msg.what=SETIMG;
                    MainActivity.this.handler.sendMessage(msg);
                }
                try {
                    URL url = new URL(path);
                    URLConnection urlConnection = url.openConnection();
                    HttpURLConnection httpURLConnection = (HttpURLConnection) urlConnection;
                    httpURLConnection.setRequestMethod("GET");
                    httpURLConnection.setConnectTimeout(5000);
                    int responseCode = httpURLConnection.getResponseCode();
                    if (responseCode == 200) {
                        InputStream inputStream = httpURLConnection.getInputStream();
                        Bitmap bitmap = BitmapFactory.decodeStream(inputStream);

                        //缓存图片
                        FileOutputStream stream=new FileOutputStream(file);
                        bitmap.compress(Bitmap.CompressFormat.JPEG,100,stream);
                        imageView.setImageBitmap(bitmap);

                        stream.close();
                    } else {
                        Message msg = new Message();
                        msg.what=HTTPSTATUSERROR;
                        MainActivity.this.handler.sendMessage(msg);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                    Message msg = new Message();
                    msg.what=URLERROR;
                    MainActivity.this.handler.sendMessage(msg);
                }
            }
        }).start();
    }
}

 

posted on 2015-11-27 14:50  jayhtt  阅读(101)  评论(0)    收藏  举报