本篇博文呢,我们来介绍一下AsyncHttpClient和SmartImageView这两个开源项目的使用以及通过一个案例来展示它们的功能
1.AsyncHttpClient的使用
AsyncHttpClient是对HttpClient的再次包装。
特点 |
---|
发送异步HTTP请求 |
HTTP请求发生在UI线程之外 |
内部采用了线程池来处理并发送请求 |
用法:
a. 下载AsyncHttpClient源代码
要使用AsyncHttpClient首先要下载它的源代码。
b.将AsyncHttpClient引入自己的工程中
下载AsyncHttpClient的源代码之后,解压复制src文件夹下的源代码,然后将其粘贴到自己的工程目录src下即可,也可以下载jar包,将jar文件粘贴在工程目录的libs文件夹下,然后右击并依此选择Build Path—-Add to Build Path即可。
c.常用类及作用
常用类名称 | 功能描述 |
---|---|
AsyncHttpClient | 用来访问网络的类 |
RequestParams | 用于参加参数的类 |
AsyncHttpResponseHandler | 访问网络后回调的接口 |
如果要使用AsyncHttpClient,首先创建AsyncHttpClient的实例,然后设置参数,接着通过AsyncHttpClient的实例对象访问网络。如果访问成功则会回调AsyncHttpResponseHandler接口中的OnSucess方法,失败则会回调OnFailure方法
2.SmartImageView的使用
开源项目SmartImageView的出现主要是为了加速从网络上加载图片,它继承自ImageView类,支持根据URL地址加载图片,支持异步加载图片,支持图片缓存等。
在使用SmartImageView之前,同样需要下载SmartImageView的源代码,然后将SmartImageView的源代码引入到自己的工程项目中。
添加SmartImageView控件样例代码如下:
<com.loopj.android.image.SmartImageView
android:layout_weight="1000"
android:id="@+id/siv"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
使用SmartImageView控件样例代码如下:
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SmartImageView siv=(SmartImageView)findViewById(R.id.siv);
siv.setImageUrl("指定地址图片",R.drawable.ic_launcher,R.drawable.ic_launcher);
}
}
上述代码演示了如何使用SmartImageView来加载一张网络图片。从代码中可以看出,SmartImageView可以当做一个自定义控件来使用。在加载指定图片的时候,只需要调用setImageURL()方法指定图片的路径、加载中现实的图片以及加载失败显示的图片即可。
下面我们通过一个简易的案例–新闻客户端来看一下这两个开源项目的应用。该案例实现了获取服务器的XML文件并将其解析出来捆绑显示到ListView上的功能,具体步骤如下:
1.创建程序
首先创建一个程序,设计用户交互界面,对应的布局文件(activity_main.xml)如下所示:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context="com.example.anew.MainActivity">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:id="@+id/loading"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:visibility="invisible" >
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="正在加载信息..." />
</LinearLayout>
<ListView
android:id="@+id/lv_news"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
</LinearLayout>
这个页面主要包含了提示用户数据正在加载中的ProgressBar,TextView以及用于展示新闻信息的ListView。
2.创建ListView Item的布局
由于用到了ListView控件,因此需要为ListView的item创建一个布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height=&#