赵雅智_引用开源框架通过AsyncHttpClient实现网络图片查看器

本文介绍了一个简单的Android应用实现,该应用通过EditText输入网址并点击按钮,实现网络图片的显示。代码示例涵盖了添加权限、创建异步请求、处理HTTP响应和展示图片的过程,提供了一个完整的解决方案。
摘要由CSDN通过智能技术生成

步骤:

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

 

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;

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;
		}

	}

}


重点代码就是这些,自己动手查看一下效果吧!~

 

开源框架资源:http://download.csdn.net/detail/zhaoyazhi2129/7400787

源码:http://download.csdn.net/detail/zhaoyazhi2129/7400815

转发请标明原文地址  http://blog.csdn.net/zhaoyazhi2129/article/details/27048527

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值