首页 > 代码库 > android---利用android-async-http开源项目实现网络图片查看器

android---利用android-async-http开源项目实现网络图片查看器

1.   导包:导入android-async-http开源项目的最新版本的包

2.简单的搭建一个网络图片查看器的界面

 

相关的界面搭建代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="${packageName}.${activityClass}" >

    <ImageView
        android:id="@+id/iv_img"
        android:layout_width="wrap_content"
        android:layout_height="300dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:src=http://www.mamicode.com/"@drawable/ic_launcher" />>


这只是一种方法,还可以运用绝对布局,或者相对布局进行布局。

3.设置网络权限

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

 

4.创建异步客户端对象

5.获取uri网络路径

6.执行get请求

   a)      如果成功创建工厂对象

   b)     工厂对象的decodeByteArray把字节转换成Bitmap对象

   c)     设置图片

7.项目分析:

点击查看网络图片,便可将你所填写的地址的图片查看出来。

相关的程序代码:

package www.csdn.net.lesson05_02;

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 android.widget.Toast;

import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;

public class MainActivity extends Activity {

	private EditText et_url;
	private ImageView iv_img;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		et_url=(EditText) findViewById(R.id.et_url);
		iv_img=(ImageView) findViewById(R.id.iv_img);
	}
	
	public void sendGetImg(View v){
		int id=v.getId();
		switch(id){
		case R.id.btn_img:
			//获取网络路径
			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 factory=new BitmapFactory();
						Bitmap bitmap=factory.decodeByteArray(responseBody, 0, responseBody.length);
						iv_img.setImageBitmap(bitmap);
					}
				}
				
				@Override
				public void onFailure(int statusCode, Header[] headers,
						byte[] responseBody, Throwable error) {
					error.printStackTrace();
				}
			});
			break;
		default:
			break;
		}
	}
}