xUtils框架的介绍(二)

昨天对xUtils整体上做了一个简单的介绍,今天咱们就代码码起,真刀实枪的也看看,看看如何快速便捷的把xUtils给集成到大家的项目中去。xUtils中有四大组件可以供我们使用,分别是ViewUtils、HttpUtils、BitmapUtils以及DbUtils。如果你没能先读一下我的上一篇文章,那么请你移步过去先整体了解一下,再回过头来看这篇文章,相信你回更有体会的。

下面依次开始介绍这些组件具体的使用。

一、ViewUtils  android中得ioc(控制反转)框架,可以完全使用注解的方式来完成UI的绑定和事件绑定。简单的说,ViewUtils的功能就是做这个的,但是可以说,就这么个功能确是能极大的简化我们的代码。下面我们看下具体的代码,顺便对比下注解的方式绑定ID和findViewById之间的差别。

	@ViewInject(R.id.btn)
	private Button btn;
	
	@ViewInject(R.id.img)
	private ImageView img;
	
	@ViewInject(R.id.list)
	private ListView list;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_second);
		ViewUtils.inject(this);}


	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_second);
		
		btn = (Button) findViewById(R.id.btn);
		img = (ImageView) findViewById(R.id.img);
		list = (ListView) findViewById(R.id.list);
		
	}


如果项目中得Activity中的控件相当多,那么想象一下代码中累积的那一大坨就真心受不了。通过xUtils的简单注解,就能轻松摆脱无尽坏味道的代码。

注意:在使用注解绑定控件的时候,一定记得在onCreate中调用ViewUtils.inject(this);

下面我们再对比下Android中事件绑定的区别。

	@OnClick({ R.id.btn, R.id.img })
	public void clickMethod(View v) {
		Toast.makeText(SecondActivity.this, "you clicked button!",
				Toast.LENGTH_SHORT).show();
	}

	@OnItemClick(R.id.list)
	public void itemClick(AdapterView parent, View view, int position,long id) {
		Toast.makeText(SecondActivity.this, "position--->" + position,
				Toast.LENGTH_SHORT).show();
	}

		btn.setOnClickListener(this);
		list.setOnItemClickListener(new OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView parent, View view,
					int position, long id) {
				Toast.makeText(SecondActivity.this, "position--->" + position,
						Toast.LENGTH_SHORT).show();
			}
		});
	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.btn:
			Toast.makeText(SecondActivity.this, "you clicked button!",
					Toast.LENGTH_SHORT).show();
			break;
		default:
			break;
		}
	}

 原本绑定Button的监听事件要么用丑陋的内部类,要么Activity实现OnClickListener,在复写的onClick方法中去根据id。而xUtils只要通过简单的一句注解就能实现监听事件的功能,而且可以实现多个控件共用一个监听方法。同时xUtils提供onClick、onItemClick、onLongClick等15种事件监听注解。 
  

注意:在使用注解监听事件的时候,监听方法名是自定义的,但是一定要保证方法的访问修饰符为public,同时方法的参数要与Android原来的监听方法参数一致,不仅参数类型,而且要保证参数的顺序。

二、BitmapUtils  加载网络或本地bitmap的时候无需担心再遇到OOM的现象,管理bitmap的内存采用了LRU算法,同时也能避免列表滑动过程中发生图片错位等得现象。加载网络图片时,还可以配置运行线程的数量,缓存路径等。。。通过BitmapUtils的各种构造器,可以很方便的创建出本地缓存路径和缓存的大小,以及内存缓存的大小。

		BitmapUtils utils = new BitmapUtils(this);
		BitmapDisplayConfig config = new BitmapDisplayConfig(this);
		config.setLoadingDrawable(getResources().getDrawable(R.drawable.loading));
		config.setLoadFailedDrawable(getResources().getDrawable(R.drawable.failed));
		config.setImageLoadCallBack(new ImageLoadCallBack() {
			@Override
			public void loadFailed(ImageView imageView, Drawable drawable) {
			}
			@Override
			public void loadCompleted(ImageView imageView, Drawable drawable,
					BitmapDisplayConfig config) {
			}
		});
		config.setBitmapMaxWidth(480);
		config.setBitmapMaxHeight(720);
//		utils.display(img, "http://img1.gtimg.com/news/pics/hv1/63/26/1451/94357968.jpg");
		utils.display(img, "http://img1.gtimg.com/news/pics/hv1/63/26/1451/94357968.jpg", config);

BitmapUtils在用来加载网络图片时,可以配置加载图片尺寸的大小,加载成功和失败的回调以及加载过程中图片的配置。同时也可以选择不配置。

//bitmapUtils.display(testImageView, "/sdcard/test.jpg"); //支持加载本地图片

// 使用ListView等容器展示图片时可通过PauseOnScrollListener控制滑动和快速滑动过程中时候暂停加载图片
listView.setOnScrollListener(new PauseOnScrollListener(bitmapUtils, false, true));
listView.setOnScrollListener(new PauseOnScrollListener(bitmapUtils, false, true), customListener);


明天再讲剩下的两个组件:DbUtils和HttpUtils。

码字不易,

如果觉得对你有所帮助,欢迎大家订阅我的微信公众账号——Android干货分享(ID:android_share)。下面是微信的二维码,为你提供及时高质的Android干货。技术交流QQ群:318588906,欢迎大家加群,共同探讨下Android和Java技术,一起壮大我们的微信干货分享社区。

    

你可能感兴趣的:(xUtils框架的介绍(二))