引用開源框架通過AsyncHttpClient實現網路圖片檢視器
阿新 • • 發佈:2019-01-26
步驟:
1.新增許可權(訪問網路許可權)
2.建立非同步請求物件
3.執行post請求(指定url路徑,新建AsyncHttpResponseHandler方法)
a) 如果成功建立工廠物件
b) 工廠物件的decodeByteArray把位元組轉換成Bitmap物件
c) 設定圖片
例項專案解析
專案要求:通過editText文字輸入框中的網址,點選檢視按鈕,進行網路圖片顯示
執行效果如下:
重點程式碼:均有詳細解析,請認真檢視註釋
1、在AndroidManifest.xml中新增許可權
<uses-permission android:name
2、佈局檔案activity_main.xml
- package com.example.photowatch;
- import org.apache.http.Header;
- import android.app.Activity;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.os.Bundle;
- import android.view.View;
-
import android.widget.EditText;
- import android.widget.ImageView;
- import com.loopj.android.http.AsyncHttpClient;
- import com.loopj.android.http.AsyncHttpResponseHandler;
- public class MainActivity extends Activity {
- private EditText et_url;
- private ImageView img_info;
- @Override
-
protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- // 獲取控制元件物件
- et_url = (EditText) findViewById(R.id.et_url);
- img_info = (ImageView) findViewById(R.id.img_info);
- };
- public void show(View v) {
- int id = v.getId();
- switch (id) {
- case R.id.btn_show:
- //請求地址
- String url = et_url.getText().toString();
- //建立網路請求物件
- AsyncHttpClient client= new AsyncHttpClient();
- client.get(url, new AsyncHttpResponseHandler() {
- @Override
- public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
- if (statusCode == 200) {
- //建立工廠物件
- BitmapFactory bitmapFactory = new BitmapFactory();
- //工廠物件的decodeByteArray把位元組轉換成Bitmap物件
- Bitmap bitmap = bitmapFactory.decodeByteArray(responseBody, 0, responseBody.length);
- //設定圖片
- img_info.setImageBitmap(bitmap);
- }
- }
- @Override
- public void onFailure(int statusCode, Header[] headers,
- byte[] responseBody, Throwable error) {
- error.printStackTrace();
- }
- });
- break;
- default:
- break;
- }
- }
- }
3、MainActivity.java
- package com.example.photowatch;
- import org.apache.http.Header;
- import android.app.Activity;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.EditText;
- import android.widget.ImageView;
- import com.loopj.android.http.AsyncHttpClient;
- import com.loopj.android.http.AsyncHttpResponseHandler;
- publicclass MainActivity extends Activity {
- private EditText et_url;
- private ImageView img_info;
- @Override
- protectedvoid onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- // 獲取控制元件物件
- et_url = (EditText) findViewById(R.id.et_url);
- img_info = (ImageView) findViewById(R.id.img_info);
- };
- publicvoid show(View v) {
- int id = v.getId();
- switch (id) {
- case R.id.btn_show:
- //請求地址
- String url = et_url.getText().toString();
- //建立網路請求物件
- AsyncHttpClient client= new AsyncHttpClient();
- client.get(url, new AsyncHttpResponseHandler() {
- @Override
- publicvoid onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
- if (statusCode == 200) {
- //建立工廠物件
- BitmapFactory bitmapFactory = new BitmapFactory();
- //工廠物件的decodeByteArray把位元組轉換成Bitmap物件
- Bitmap bitmap = bitmapFactory.decodeByteArray(responseBody, 0, responseBody.length);
- //設定圖片
- img_info.setImageBitmap(bitmap);
- }
- }
- @Override
- publicvoid onFailure(int statusCode, Header[] headers,
- byte[] responseBody, Throwable error) {
- error.printStackTrace();
- }
- });
- break;
- default:
- break;
- }
- }
- }
重點程式碼就是這些,自己動手檢視一下效果吧!~