xUtils框架t网络加载图片 结合SwipeRefreshLayou下拉刷新

效果图:
<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就不上传了,这个要看各位同僚的具体需求而定。。。
 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值