1. 程式人生 > >引用開源框架通過AsyncHttpClient實現網路圖片檢視器

引用開源框架通過AsyncHttpClient實現網路圖片檢視器

步驟:

1.新增許可權(訪問網路許可權)

2.建立非同步請求物件

3.執行post請求(指定url路徑,新建AsyncHttpResponseHandler方法)

a) 如果成功建立工廠物件

b) 工廠物件的decodeByteArray把位元組轉換成Bitmap物件

c) 設定圖片

例項專案解析

專案要求:通過editText文字輸入框中的網址,點選檢視按鈕,進行網路圖片顯示

執行效果如下:

    

重點程式碼:均有詳細解析,請認真檢視註釋

1、在AndroidManifest.xml中新增許可權

    <uses-permission android:name

="android.permission.INTERNET"/>

2、佈局檔案activity_main.xml

  1. package com.example.photowatch;  
  2. import org.apache.http.Header;  
  3. import android.app.Activity;  
  4. import android.graphics.Bitmap;  
  5. import android.graphics.BitmapFactory;  
  6. import android.os.Bundle;  
  7. import android.view.View;  
  8. import android.widget.EditText;  
  9. import android.widget.ImageView;  
  10. import com.loopj.android.http.AsyncHttpClient;  
  11. import com.loopj.android.http.AsyncHttpResponseHandler;  
  12. public class MainActivity extends Activity {  
  13.     private EditText et_url;  
  14.     private ImageView img_info;  
  15.     @Override  
  16.     protected void onCreate(Bundle savedInstanceState) {  
  17.         super.onCreate(savedInstanceState);  
  18.         setContentView(R.layout.activity_main);  
  19.         // 獲取控制元件物件  
  20.         et_url = (EditText) findViewById(R.id.et_url);  
  21.         img_info = (ImageView) findViewById(R.id.img_info);  
  22.     };  
  23.     public void show(View v) {  
  24.         int id = v.getId();  
  25.         switch (id) {  
  26.         case R.id.btn_show:  
  27.             //請求地址  
  28.             String url = et_url.getText().toString();  
  29.             //建立網路請求物件  
  30.             AsyncHttpClient clientnew AsyncHttpClient();  
  31.              client.get(url, new AsyncHttpResponseHandler() {  
  32.                 @Override  
  33.                 public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {  
  34.                     if (statusCode == 200) {  
  35.                         //建立工廠物件  
  36.                         BitmapFactory bitmapFactory = new BitmapFactory();  
  37.                         //工廠物件的decodeByteArray把位元組轉換成Bitmap物件  
  38.                         Bitmap bitmap = bitmapFactory.decodeByteArray(responseBody, 0, responseBody.length);  
  39.                         //設定圖片  
  40.                         img_info.setImageBitmap(bitmap);  
  41.                     }  
  42.                 }  
  43.                 @Override  
  44.                 public void onFailure(int statusCode, Header[] headers,  
  45.                         byte[] responseBody, Throwable error) {  
  46.                     error.printStackTrace();  
  47.                 }  
  48.             });  
  49.             break;  
  50.         default:  
  51.             break;  
  52.         }  
  53.     }  
  54. }  

3、MainActivity.java

  1. package com.example.photowatch;  
  2. import org.apache.http.Header;  
  3. import android.app.Activity;  
  4. import android.graphics.Bitmap;  
  5. import android.graphics.BitmapFactory;  
  6. import android.os.Bundle;  
  7. import android.view.View;  
  8. import android.widget.EditText;  
  9. import android.widget.ImageView;  
  10. import com.loopj.android.http.AsyncHttpClient;  
  11. import com.loopj.android.http.AsyncHttpResponseHandler;  
  12. publicclass MainActivity extends Activity {  
  13.     private EditText et_url;  
  14.     private ImageView img_info;  
  15.     @Override
  16.     protectedvoid onCreate(Bundle savedInstanceState) {  
  17.         super.onCreate(savedInstanceState);  
  18.         setContentView(R.layout.activity_main);  
  19.         // 獲取控制元件物件
  20.         et_url = (EditText) findViewById(R.id.et_url);  
  21.         img_info = (ImageView) findViewById(R.id.img_info);  
  22.     };  
  23.     publicvoid show(View v) {  
  24.         int id = v.getId();  
  25.         switch (id) {  
  26.         case R.id.btn_show:  
  27.             //請求地址
  28.             String url = et_url.getText().toString();  
  29.             //建立網路請求物件
  30.             AsyncHttpClient client= new AsyncHttpClient();  
  31.              client.get(url, new AsyncHttpResponseHandler() {  
  32.                 @Override
  33.                 publicvoid onSuccess(int statusCode, Header[] headers, byte[] responseBody) {  
  34.                     if (statusCode == 200) {  
  35.                         //建立工廠物件
  36.                         BitmapFactory bitmapFactory = new BitmapFactory();  
  37.                         //工廠物件的decodeByteArray把位元組轉換成Bitmap物件
  38.                         Bitmap bitmap = bitmapFactory.decodeByteArray(responseBody, 0, responseBody.length);  
  39.                         //設定圖片
  40.                         img_info.setImageBitmap(bitmap);  
  41.                     }  
  42.                 }  
  43.                 @Override
  44.                 publicvoid onFailure(int statusCode, Header[] headers,  
  45.                         byte[] responseBody, Throwable error) {  
  46.                     error.printStackTrace();  
  47.                 }  
  48.             });  
  49.             break;  
  50.         default:  
  51.             break;  
  52.         }  
  53.     }  
  54. }  


重點程式碼就是這些,自己動手檢視一下效果吧!~