xUtils框架介绍(二)
2015-06-13 16:49
489 查看
下面依次开始介绍这些组件具体的使用。
一、ViewUtils android中得ioc(控制反转)框架,可以完全使用注解的方式来完成UI的绑定和事件绑定。简单的说,ViewUtils的功能就是做这个的,但是可以说,就这么个功能确是能极大的简化我们的代码。下面我们看下具体的代码,顺便对比下注解的方式绑定ID和findViewById之间的差别。
如果项目中得Activity中的控件相当多,那么想象一下代码中累积的那一大坨就真心受不了。通过xUtils的简单注解,就能轻松摆脱无尽坏味道的代码。
注意:在使用注解绑定控件的时候,一定记得在onCreate中调用ViewUtils.inject(this);
下面我们再对比下Android中事件绑定的区别。
原本绑定Button的监听事件要么用丑陋的内部类,要么Activity实现OnClickListener,在复写的onClick方法中去根据id。而xUtils只要通过简单的一句注解就能实现监听事件的功能,而且可以实现多个控件共用一个监听方法。同时xUtils提供onClick、onItemClick、onLongClick等15种事件监听注解。
注意:在使用注解监听事件的时候,监听方法名是自定义的,但是一定要保证方法的访问修饰符为public,同时方法的参数要与Android原来的监听方法参数一致,不仅参数类型,而且要保证参数的顺序。
二、BitmapUtils 加载网络或本地bitmap的时候无需担心再遇到OOM的现象,管理bitmap的内存采用了LRU算法,同时也能避免列表滑动过程中发生图片错位等得现象。加载网络图片时,还可以配置运行线程的数量,缓存路径等。。。通过BitmapUtils的各种构造器,可以很方便的创建出本地缓存路径和缓存的大小,以及内存缓存的大小。
BitmapUtils在用来加载网络图片时,可以配置加载图片尺寸的大小,加载成功和失败的回调以及加载过程中图片的配置。同时也可以选择不配置。
一、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);
相关文章推荐
- 基于JSP的登陆验证码
- 第十五周项目一:用二进制文件处理学生成绩
- YT03-递推求解课后题目-1003 不容易系列之(3)—— LELE的RPG难题-(6.7日-烟台大学ACM预备队解题报告)
- YT03-递推求解课后题目-1002 超级楼梯-(6.7日-烟台大学ACM预备队解题报告)
- eclipse+CDT调试segmentation fault错误
- oracle建立表空间
- 兵器簿之Alcatraz(插件管理神器)的配置和使用
- DJANGO_SETTINGS_MODULE设置(MacOS, Linux)
- Spring Framework 下载地址
- C#中的类:字段、属性、方法
- 关于几个信号
- 批量插入数据 C# SqlBulkCopy使用
- vi编辑器的使用
- 批量插入数据 C# SqlBulkCopy使用
- syslog(),closelog()与openlog()--日志操作函数
- YT03-递推求解课后题目-1001 母牛的故事-(6.7日-烟台大学ACM预备队解题报告)
- 堆和栈的区别
- crontab命令简介
- Mac OS X中解决socket.error: [Errno 48] Address already in use 端口占用问题
- Android中同一个activity用到这个两个或多个监听事件冲突的解决