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="@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>
这只是一种方法,还可以运用绝对布局,或者相对布局进行布局。
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; } } }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。