效果图:
<img src="https://img-blog.csdn.net/20141220115158343?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamF2YXluYWc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
///程序入口 xUtils 框架结合SwipeRefreshLayout 全部代码都在这里了 差不多都有注释的 一看就懂的。。。
package com.example.text;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.lidroid.xutils.BitmapUtils;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.ViewUtils;
import com.lidroid.xutils.bitmap.BitmapCommonUtils;
import com.lidroid.xutils.bitmap.BitmapGlobalConfig;
import com.lidroid.xutils.bitmap.PauseOnScrollListener;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.HttpCache;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;
import com.lidroid.xutils.view.annotation.ViewInject;
import com.lidroid.xutils.view.annotation.event.OnClick;
import com.lidroid.xutils.view.annotation.event.OnItemClick;
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.graphics.Bitmap;
import android.support.v4.widget.SwipeRefreshLayout;
import android.util.DisplayMetrics;
import android.view.Menu;
import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
/**
*
* @author 洋洋
* 项目名称:xUtils框架结合SwipeRefreshLayout网络加载下拉刷新
* 类 名 称:程序入口
* 类 描 述:xUtils框架结合SwipeRefreshLayout网络加载下拉刷新
* 创 建 人:刘兴洋 Copyright
* 创建时间:2014-12-20上午9:50:03
*(c)刘兴洋-版权所有
*/
public class MainActivity extends Activity implements SwipeRefreshLayout.OnRefreshListener {
@ViewInject(R.id.swipe)
private SwipeRefreshLayout swipe;
/**
* 初始化ListView ui
*/
@ViewInject(R.id.lv_list)
private ListView lv_list;
/*创建保存图片类型没变量:BitmapUtils*/
public static BitmapUtils bitmapUtils;
private ListAdpter listAdpter;
HttpUtils conn=new HttpUtils();
String url="www.baidu.com";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*Acitvity中的注释*/
ViewUtils.inject(this);
/**
* 下拉刷新
*/
swipe.setOnRefreshListener(this);
/**
* 设置下拉刷新时的颜色
* setColorSchemeResources:使用这个来设置颜色
* setColorScheme:已经弃用了
*/
swipe.setColorScheme(android.R.color.holo_green_dark, android.R.color.holo_green_light,
android.R.color.holo_orange_light, android.R.color.holo_red_light);
/*给图片对象传入向下文,不单是一次使用,可以多次重载使用*/
bitmapUtils=BitmapHelp.getBitmapUtils(MainActivity.this.getApplicationContext());
/*默认是加载的背景图片*/
bitmapUtils.configDefaultLoadingImage(R.drawable.ic_launcher);
/*加载失败是的图片*/
bitmapUtils.configDefaultLoadFailedImage(R.drawable.ic_launcher);
/*加载压缩的图片*/
bitmapUtils.configDefaultBitmapConfig(Bitmap.Config.RGB_565);
/*设置图片的宽高,不设置时自动适应控件的大小*/
//bitmapUtils.configDefaultBitmapMaxSize(BitmapCommonUtils.getScreenSize(MainActivity.this).scaleDown(5));
/*
* 滑动加载图片时,快速滑过的时候不用加载
* 第一个值:bitmapUtils,当前加载图片的对象
* 第二个值:false:触摸滚动的时候暂停加载{@linkplain BitmapUtils#pause() pause loading} during touch scrolling
* 第三个值:true:停顿加载,{@linkplain BitmapUtils#pause() pause loading} during fling
* */
lv_list.setOnScrollListener(new PauseOnScrollListener(bitmapUtils, false, true));
conn.configCurrentHttpCacheExpiry(5000);
conn.send(HttpMethod.GET, url, new RequestCallBack<String>() {
@Override
public void onSuccess(ResponseInfo<String> responseInfo) {
/*给listView适配器 适配数据*/
listAdpter=new ListAdpter(MainActivity.this,bitmapUtils,getImgSrcList(responseInfo.result));
lv_list.setAdapter(listAdpter);
/*提示lsitview 更新数据*/
listAdpter.notifyDataSetChanged();
}
@Override
public void onFailure(HttpException error, String msg) {
// TODO 自动生成的方法存根
}
});
}
/**
* 解析json
* @param json 从网络读取的数据
* @return
*/
public List<String> getImgSrcList(String json){
List<String> list=new ArrayList<String>();
try {
JSONArray array=new JSONArray(json);
for (int i = 0; i < array.length(); i++) {
JSONObject object=array.getJSONObject(i);
String img=object.get("img").toString();
list.add("www.baidu.com/img/"+img);
}
} catch (JSONException e) {
e.printStackTrace();
}
return list;
}
/**
* ListView 的点击事件
* @param parent: 数据类型
* @param view: 视图
* @param position: 位置
* @param id :id
*/
@OnItemClick(R.id.lv_list)
public void onColciItme(AdapterView<?> parent,View view,int position,long id ){
Toast.makeText(MainActivity.this, "ssss", 1000).show();
}
@Override
public void onRefresh() {
//tv_text.setVisibility(View.VISIBLE);
//mHandler.sendEmptyMessageDelayed(REFRESH_COMPLETE, 2500);
new Handler().postDelayed(new Runnable() {
public void run() {
//tv_text.setVisibility(View.INVISIBLE);
// true 加动画, flase 取消动画
swipe.setRefreshing(false);
conn.configCurrentHttpCacheExpiry(5000);
conn.send(HttpMethod.GET, url, new RequestCallBack<String>() {
@Override
public void onSuccess(ResponseInfo<String> responseInfo) {
/*给listView适配器 适配数据*/
listAdpter=new ListAdpter(MainActivity.this,bitmapUtils,getImgSrcList(responseInfo.result));
lv_list.setAdapter(listAdpter);
/*提示lsitview 更新数据*/
listAdpter.notifyDataSetChanged();
}
@Override
public void onFailure(HttpException error, String msg) {
// TODO 自动生成的方法存根
}
});
}
}, 3000);
}
}
//下面是 listview 适配器的数据
<pre name="code" class="java">package com.example.text;
import java.util.List;
import com.lidroid.xutils.BitmapUtils;
import com.lidroid.xutils.ViewUtils;
import com.lidroid.xutils.view.annotation.ViewInject;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
/**
*
* @author 洋洋
* 项目名称:xUtils框架结合SwipeRefreshLayout网络加载下拉刷新
* 类 名 称:listview 适配器
* 类 描 述:给listview 适配数据
* 创 建 人:刘兴洋 Copyright
* 创建时间:2014-12-20上午9:51:36
*(c)刘兴洋-版权所有
*/
public class ListAdpter extends BaseAdapter {
/*视图*/
private LayoutInflater inflater;
/*上下文*/
private Context context;
/*数据*/
private List<String> list;
/*图片展示对象*/
private BitmapUtils bitmapUtils;
public ListAdpter(Context context,BitmapUtils bitmapUtils,List<String> list) {
super();
this.inflater = LayoutInflater.from(context);
this.context = context;
this.bitmapUtils=bitmapUtils;
this.list=list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int arg0) {
return list.get(arg0);
}
@Override
public long getItemId(int arg0) {
return arg0;
}
@Override
public View getView(int arg0, View view, ViewGroup arg2) {
ImgItme imgItme;
if(view==null){
imgItme=new ImgItme();
view=inflater.inflate(R.layout.itme, null);
/*fragment类型的注入*/
ViewUtils.inject(imgItme,view);
view.setTag(imgItme);
}else{
imgItme=(ImgItme) view.getTag();
}
/**
* 映射数据 display:加载图片
*/
bitmapUtils.display(imgItme.iv_img,list.get(arg0));
return view;
}
/**
*
* @author 洋洋
* 项目名称:xUtils框架结合SwipeRefreshLayout网络加载下拉刷新
* 类 名 称:临时变量
* 类 描 述:临时变量
* 创 建 人:刘兴洋 Copyright
* 创建时间:2014-12-20上午9:52:26
*(c)刘兴洋-版权所有
*/
public final class ImgItme{
@ViewInject(R.id.iv_img)
private ImageView iv_img;
}
}
以上的就是全部代码了 xml文件 就一个SwipeRefreshLayou嵌套个listview,,, xml就不上传了,这个要看各位同僚的具体需求而定。。。