1. 程式人生 > >Androidstudio專案連線下載網路資源

Androidstudio專案連線下載網路資源

      現如今開發的Android專案基本都需要進行到網路中進行資源瀏覽並下載。已經很少有僅靠單機操作的手機應用APP。本次文章我們主要介紹Android專案中如何進行連線網路操作,並通過一個現實網路圖片的案例進行解釋。

      聯網操作主要用到HttpURLConnection操作,注意事項,應為是聯網耗時操作,需要開子執行緒。還有記得新增許可權操作。

1、頁面佈局:(為方便起見我就只用線性佈局了)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
。。。。。。。。。。。。。。。。。。。。。。。。。。。
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="輸入網址"
        android:id="@+id/wangzhi"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="dianji"
        android:text="瀏覽"
        android:textSize="20sp"/>
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/tuxian"/>

</LinearLayout>

為了方便起見,我button就直接設定onclick。關於button其他使用方法,可參看文章:

2、新增許可權:

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

3、主頁面操作:

(1)、設定變數:

private EditText wangzhi;
private ImageView tuxian;

(2)、繫結變數:

wangzhi=(EditText)findViewById(R.id.wangzhi);
tuxian=(ImageView)findViewById(R.id.tuxian);

(3)、對連線網路邏輯進行實現:(先顯示程式碼,而後進行解釋)

public void dianji(View view) {
    new Thread(){
        @Override
        public void run() {
            String path=wangzhi.getText().toString().trim();
            try {
                URL url=new URL(path);
                HttpURLConnection connection=(HttpURLConnection) url.openConnection();
                connection.setRequestMethod("GET");
                connection.setConnectTimeout(5000);
                InputStream in=connection.getInputStream();
                final Bitmap bitmap= BitmapFactory.decodeStream(in);
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        tuxian.setImageBitmap(bitmap);

                    }
                });

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }.start();
}

首先因為這是聯網耗時操作,所以需要開通子執行緒Thread();考慮到在子執行緒中是不能對介面UI進行操作,不過谷歌工程師考慮到這一點,設定一個api功能runOnUiThread在這上面就可以進行UI操作,當時其功能實現只是將執行緒之間的資訊傳送機制進行包裝。而後文章我會對執行緒之間的操作進行解釋。

其中HttpURLConnection操作基本成固定格式,也沒多少解釋的,無法就是設定請求型別、響應超時時間、獲取流等,注意如果只是獲取頁面資訊就不需要進行流的轉化,因為本案例涉及到影象的顯示,所以需要用到bitmap點陣圖api功能。使用也挺方便的。裡面有很多類,針對不同的型別。最終效果如圖:

 功能請測有效,今天是國慶節第二天,祝各位國慶節快樂。昨天小暉也給自己好好放了個假,看了一天電視劇。。^_^。。沒辦法,外出名額限制,不夠比基層的師兄們好多了,國慶,他們連休息的時間都沒有。沒辦法,雖已不是軍人。辛苦了!敬禮!