1. 程式人生 > >android網路圖片檢視器

android網路圖片檢視器

package com.itheima74.internetpicturelook;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 * 1.輸入一個圖片url
 * 2.轉換成bitmap點陣圖
 * 3.展示到ImageView上
 */
public class MainActivity extends AppCompatActivity {

    private EditText et_url;
    private ImageView iv;

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

        et_url = (EditText) findViewById(R.id.et_url);
        iv = (ImageView) findViewById(R.id.iv);
        findViewById(R.id.bt_look).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String path = et_url.getText().toString().trim();
                if (path.isEmpty()) {
                    Toast.makeText(MainActivity.this, "請輸入圖片網址", Toast.LENGTH_SHORT).show();
                } else {
                    //開啟子執行緒去網路下載圖片
                    downLoadPicture(path);
                }
            }

            private void downLoadPicture(final String path) {
                // 子執行緒請求網路
                new Thread() {
                    @Override
                    public void run() {
                        try {
                            URL url = new URL(path);
                            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                            connection.setRequestMethod("GET");
                            connection.setConnectTimeout(5000);
                            int responseCode = connection.getResponseCode();
                            if (responseCode == 200) {
                                InputStream inputStream = connection.getInputStream();
                                final Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
                                // 主執行緒更新UI
                                runOnUiThread(new Runnable() {
                                    @Override
                                    public void run() {
                                        iv.setImageBitmap(bitmap);
                                    }
                                });
                            }
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }.start();
            }
        });
    }

}