XUtils3框架
框架简介
开源地址 https://github.com/wyouflf/xUtils3/tree/master
- xUtils 包含了很多实用的android工具.
- xUtils 支持超大文件(超过2G)上传,更全面的http请求协议支持(11种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响…
- xUtils 最低兼容Android 4.0
- xUtils3:
1.HTTP实现替换HttpClient为UrlConnection, 自动解析回调泛型, 更安全的断点续传策略.
2.支持标准的Cookie策略, 区分domain, path
3.事件注解去除不常用的功能, 提高性能.
4.数据库api简化提高性能, 达到和greenDao一致的性能.
5.图片绑定支持gif(受系统兼容性影响, 部分gif文件只能静态显示), webp; 支持圆角, 圆形, 方形等裁剪, 支持自动旋转
使用前配置
项目导入
compile 'org.xutils:xutils:3.3.36'
需要的权限
<uses-permissionandroid:name="android.permission.INTERNET"/><uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
初始化
// 在application的onCreate中初始化@Overridepublicvoid onCreate(){super.onCreate();x.Ext.init(this);x.Ext.setDebug(BuildConfig.DEBUG);// 是否输出debug日志, 开启debug会影响性能....}
使用举例
XUtils3一共有4大功能:注解模块,网络模块,图片加载模块,数据库模块
- viewUtils:用来代替findViewbyId,也可以用来给控件添加点击事件
// 使用ViewUtils绑定控件@ViewInject(R.id.radioGroup)privateRadioGroup rg;@ViewInject(R.id.imgv)privateImageView imgv;@ViewInject(R.id.txtv1)privateTextView txtv;
// ViewUtils支持绑定点击事件@OnClick(R.id.btn)publicvoid btnShow(View view){}
/*** 1. 方法必须私有限定,* 2. 方法参数形式必须和type对应的Listener接口一致.* 3. 注解参数value支持数组: value={id1, id2, id3}* 4. 其它参数说明见{@link org.xutils.event.annotation.Event}类的说明.**/@Event(value = R.id.btn_test_baidu1,type =View.OnClickListener.class/*可选参数, 默认是View.OnClickListener.class*/)privatevoid onTestBaidu1Click(View view){...}
//记得在Activity的oncreate方法里面写上下面的代码:// 注入绑定事件ViewUtils.inject(this);
- HttpUtils:访问网络
//用来上传文件,下载文件HttpUtils hUtils =newHttpUtils(5*1000);hUtils.send(HttpMethod.GET,"http://blog.csdn.net/qq379454816",newRequestCallBack<String>(){@Overridepublicvoid onSuccess(ResponseInfo<String> responseInfo){txtv.setText(responseInfo.result);}@Overridepublicvoid onFailure(HttpException error,String msg){txtv.setText(error.getMessage()+","+ msg);}});
//HttpUtlis的使用@Event(value = R.id.btn_test_baidu2)privatevoid onTestBaidu2Click(View view){RequestParamsparams=newRequestParams("https://www.baidu.com/s");params.setSslSocketFactory(...);// 设置sslparams.addQueryStringParameter("wd","xUtils");x.http().get(params,newCallback.CommonCallback<String>(){@Overridepublicvoid onSuccess(String result){Toast.makeText(x.app(), result,Toast.LENGTH_LONG).show();}@Overridepublicvoid onError(Throwable ex,boolean isOnCallback){Toast.makeText(x.app(), ex.getMessage(),Toast.LENGTH_LONG).show();}@Overridepublicvoid onCancelled(CancelledException cex){Toast.makeText(x.app(),"cancelled",Toast.LENGTH_LONG).show();}@Overridepublicvoid onFinished(){}});}
- DbUtils使用数据库
//先建一个类,用来生成数据库中的表@Table(name ="info")publicclassStudentInfo{@Column(name ="id", isId =true)privateint id;@Column(name ="name")privateString name;@Column(name ="age")privateint age;publicint getId(){return id;}publicvoid setId(int id){this.id = id;}publicString getName(){return name;}publicvoid setName(String name){this.name = name;}publicint getAge(){return age;}publicvoid setAge(int age){this.age = age;}}
//使用DbUtilsDbManager.DaoConfig daoConfig =newDaoConfig()// 数据库的名字.setDbName("SudentInfo")// 保存到指定路径// .setDbDir(new// File(Environment.getExternalStorageDirectory().getAbsolutePath()))// 数据库的版本号.setDbVersion(1)// 数据库版本更新监听.setDbUpgradeListener(newDbUpgradeListener(){@Overridepublicvoid onUpgrade(DbManager arg0,int arg1,int arg2){LogUtil.e("数据库版本更新了!");}});DbManager manager = x.getDb(daoConfig);try{//创建对象,用来生成表StudentInfo info =newStudentInfo();info.setAge(16);info.setName("小花");//创建表manager.saveOrUpdate(info);}catch(DbException e){e.printStackTrace();}
//dBUtils:用来操作数据库//创建数据库DbUtils dUtils =DbUtils.create(MainActivity.this,"Student");try{//创建表,表名为包名_StudentInfodUtils.createTableIfNotExist(StudentInfo.class);}catch(DbException e){e.printStackTrace();}
- BitmapUtils绑定图片
// 设置加载图片的参数ImageOptions imageOptions =newImageOptions.Builder()// 是否忽略GIF格式的图片.setIgnoreGif(false)// 图片缩放模式.setImageScaleType(ScaleType.CENTER_CROP)// 下载中显示的图片.setLoadingDrawableId(R.drawable.ic_launcher)// 下载失败显示的图片.setFailureDrawableId(R.drawable.ic_launcher)// 得到ImageOptions对象.build();x.image().bind(imageView, url, imageOptions);// assets filex.image().bind(imageView,"assets://test.gif", imageOptions);// local filex.image().bind(imageView,newFile("/sdcard/test.gif").toURI().toString(), imageOptions);x.image().bind(imageView,"/sdcard/test.gif", imageOptions);x.image().bind(imageView,"file:///sdcard/test.gif", imageOptions);x.image().bind(imageView,"file:/sdcard/test.gif", imageOptions);//带回调x.image().bind(imageView, url, imageOptions,newCallback.CommonCallback<Drawable>(){...});x.image().loadDrawable(url, imageOptions,newCallback.CommonCallback<Drawable>(){...});x.image().loadFile(url, imageOptions,newCallback.CommonCallback<File>(){...});
//加载ImageView的图片资源,可以加载本地、网络BitmapUtils bUtils =newBitmapUtils(this); bUtils.display(imageView,"http://image.tianjimedia.com/uploadImages/2013/221/JGR58NXB5V62.jpg");
- log的使用
//设置是否允许输出对应级别的,false为不输出LogUtils.allowE=false;//以error的形式输出日志LogUtils.e("ViewUtils调用成功!");