您的位置:首页 > 理论基础 > 计算机网络

Android实现加载网络端图片

2015-07-03 16:05 561 查看
要获取网络上的图片,首先得有网络的访问权限,需要在AndroidManifest中添加相应权限,效果图:



布局文件如下:

<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="@drawable/ic_launcher" />

<EditText
android:id="@+id/et_url"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_marginBottom="60dp"
android:inputType="textUri"
android:text="@string/et_url"/>

<Button
android:id="@+id/btn_img"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:onClick="sendGetImg"
android:text="@string/btn_img" />

</RelativeLayout>

功能代码:

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;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android