Google Code Prettify

2016年10月31日 星期一

[Android] ImageView顯示網路圖片

當drawable放置太多圖檔時,難免 APP 容量將會一直肥大肥大在肥大,所以有方法可以解決這問題,將你所需要的圖示改至網路上,當指定位置後,即可直接使用在你需要的地方。 

廢話不多說,大家練習看看吧~
這篇主要是為了下一篇鋪路~~
關於IPCam鋪路阿~~~~ (搞得Farmer都兩天幾乎沒休息,底子差是硬傷 ..)





所以主要都是參考 小黑人 大大的文章

 【Android】ImageView顯示網路圖片(Converting Image URL to Bitmap)
http://dean-android.blogspot.tw/2013/06/androidimageviewconverting-image-url-to.html

Manifest File

加入網路連線權限


<uses-permission android:name="android.permission.INTERNET"/>

Layout

<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:id="@+id/uri"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />

    <ImageView
        android:layout_width="350dp"
        android:layout_height="350dp"
        android:id="@+id/img"
        android:layout_below="@+id/uri"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="54dp" />


Main

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

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

public class MainActivity extends AppCompatActivity {

    private ImageView img;
    private Button btn;

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

        //顯示網路圖片的ImageView與進行讀取網路圖片的Button
        img = (ImageView) findViewById(R.id.img);
        btn = (Button) findViewById(R.id.uri);

        btn.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View arg0)
            {
                //建立一個AsyncTask執行緒進行圖片讀取動作,並帶入圖片連結網址路徑
                new AsyncTask<String, Void, Bitmap>()
                {
                    @Override
                    protected Bitmap doInBackground(String... params)
                    {
                        String url = params[0];
                        return getBitmapFromURL(url);
                    }

                    @Override
                    protected void onPostExecute(Bitmap result)
                    {
                        img. setImageBitmap (result);
                        super.onPostExecute(result);
                    }
                }.execute("網址位置");
            }
        });


    }

    //讀取網路圖片,型態為Bitmap
    private static Bitmap getBitmapFromURL(String imageUrl)
    {
        try
        {
            URL url = new URL(imageUrl);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoInput(true);
            connection.connect();
            InputStream input = connection.getInputStream();
            Bitmap bitmap = BitmapFactory.decodeStream(input);
            return bitmap;
        }
        catch (IOException e)
        {
            e.printStackTrace();
            return null;
        }
    }
}

沒有留言:

張貼留言