XUtils3框架

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; 支持圆角, 圆形, 方形等裁剪, 支持自动旋转

使用前配置

项目导入

  1. compile 'org.xutils:xutils:3.3.36'

需要的权限

  1. <uses-permissionandroid:name="android.permission.INTERNET"/>
  2. <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

初始化

  1. // 在application的onCreate中初始化
  2. @Override
  3. publicvoid onCreate(){
  4. super.onCreate();
  5. x.Ext.init(this);
  6. x.Ext.setDebug(BuildConfig.DEBUG);// 是否输出debug日志, 开启debug会影响性能.
  7. ...
  8. }

使用举例

XUtils3一共有4大功能:注解模块网络模块图片加载模块数据库模块

  • viewUtils:用来代替findViewbyId,也可以用来给控件添加点击事件
  1. // 使用ViewUtils绑定控件
  2. @ViewInject(R.id.radioGroup)
  3. privateRadioGroup rg;
  4. @ViewInject(R.id.imgv)
  5. privateImageView imgv;
  6. @ViewInject(R.id.txtv1)
  7. privateTextView txtv;
  1. // ViewUtils支持绑定点击事件
  2. @OnClick(R.id.btn)
  3. publicvoid btnShow(View view){}
  1. /**
  2. * 1. 方法必须私有限定,
  3. * 2. 方法参数形式必须和type对应的Listener接口一致.
  4. * 3. 注解参数value支持数组: value={id1, id2, id3}
  5. * 4. 其它参数说明见{@link org.xutils.event.annotation.Event}类的说明.
  6. **/
  7. @Event(value = R.id.btn_test_baidu1,
  8. type =View.OnClickListener.class/*可选参数, 默认是View.OnClickListener.class*/)
  9. privatevoid onTestBaidu1Click(View view){
  10. ...
  11. }
  1. //记得在Activity的oncreate方法里面写上下面的代码:
  2. // 注入绑定事件
  3. ViewUtils.inject(this);
  • HttpUtils:访问网络
  1. //用来上传文件,下载文件
  2. HttpUtils hUtils =newHttpUtils(5*1000);
  3. hUtils.send(HttpMethod.GET,"http://blog.csdn.net/qq379454816",
  4. newRequestCallBack<String>(){
  5. @Override
  6. publicvoid onSuccess(ResponseInfo<String> responseInfo){
  7. txtv.setText(responseInfo.result);
  8. }
  9. @Override
  10. publicvoid onFailure(HttpException error,String msg){
  11. txtv.setText(error.getMessage()+","+ msg);
  12. }
  13. });
  1. //HttpUtlis的使用
  2. @Event(value = R.id.btn_test_baidu2)
  3. privatevoid onTestBaidu2Click(View view){
  4. RequestParamsparams=newRequestParams("https://www.baidu.com/s");
  5. params.setSslSocketFactory(...);// 设置ssl
  6. params.addQueryStringParameter("wd","xUtils");
  7. x.http().get(params,newCallback.CommonCallback<String>(){
  8. @Override
  9. publicvoid onSuccess(String result){
  10. Toast.makeText(x.app(), result,Toast.LENGTH_LONG).show();
  11. }
  12. @Override
  13. publicvoid onError(Throwable ex,boolean isOnCallback){
  14. Toast.makeText(x.app(), ex.getMessage(),Toast.LENGTH_LONG).show();
  15. }
  16. @Override
  17. publicvoid onCancelled(CancelledException cex){
  18. Toast.makeText(x.app(),"cancelled",Toast.LENGTH_LONG).show();
  19. }
  20. @Override
  21. publicvoid onFinished(){
  22. }
  23. });
  24. }
  • DbUtils使用数据库
  1. //先建一个类,用来生成数据库中的表
  2. @Table(name ="info")
  3. publicclassStudentInfo{
  4. @Column(name ="id", isId =true)
  5. privateint id;
  6. @Column(name ="name")
  7. privateString name;
  8. @Column(name ="age")
  9. privateint age;
  10. publicint getId(){
  11. return id;
  12. }
  13. publicvoid setId(int id){
  14. this.id = id;
  15. }
  16. publicString getName(){
  17. return name;
  18. }
  19. publicvoid setName(String name){
  20. this.name = name;
  21. }
  22. publicint getAge(){
  23. return age;
  24. }
  25. publicvoid setAge(int age){
  26. this.age = age;
  27. }
  28. }
  1. //使用DbUtils
  2. DbManager.DaoConfig daoConfig =newDaoConfig()
  3. // 数据库的名字
  4. .setDbName("SudentInfo")
  5. // 保存到指定路径
  6. // .setDbDir(new
  7. // File(Environment.getExternalStorageDirectory().getAbsolutePath()))
  8. // 数据库的版本号
  9. .setDbVersion(1)
  10. // 数据库版本更新监听
  11. .setDbUpgradeListener(newDbUpgradeListener(){
  12. @Override
  13. publicvoid onUpgrade(DbManager arg0,int arg1,int arg2){
  14. LogUtil.e("数据库版本更新了!");
  15. }
  16. });
  17. DbManager manager = x.getDb(daoConfig);
  18. try{
  19. //创建对象,用来生成表
  20. StudentInfo info =newStudentInfo();
  21. info.setAge(16);
  22. info.setName("小花");
  23. //创建表
  24. manager.saveOrUpdate(info);
  25. }catch(DbException e){
  26. e.printStackTrace();
  27. }
  1. //dBUtils:用来操作数据库
  2. //创建数据库
  3. DbUtils dUtils =DbUtils.create(MainActivity.this,"Student");
  4. try{
  5. //创建表,表名为包名_StudentInfo
  6. dUtils.createTableIfNotExist(StudentInfo.class);
  7. }catch(DbException e){
  8. e.printStackTrace();
  9. }
  • BitmapUtils绑定图片
  1. // 设置加载图片的参数
  2. ImageOptions imageOptions =newImageOptions.Builder()
  3. // 是否忽略GIF格式的图片
  4. .setIgnoreGif(false)
  5. // 图片缩放模式
  6. .setImageScaleType(ScaleType.CENTER_CROP)
  7. // 下载中显示的图片
  8. .setLoadingDrawableId(R.drawable.ic_launcher)
  9. // 下载失败显示的图片
  10. .setFailureDrawableId(R.drawable.ic_launcher)
  11. // 得到ImageOptions对象
  12. .build();
  13. x.image().bind(imageView, url, imageOptions);
  14. // assets file
  15. x.image().bind(imageView,"assets://test.gif", imageOptions);
  16. // local file
  17. x.image().bind(imageView,newFile("/sdcard/test.gif").toURI().toString(), imageOptions);
  18. x.image().bind(imageView,"/sdcard/test.gif", imageOptions);
  19. x.image().bind(imageView,"file:///sdcard/test.gif", imageOptions);
  20. x.image().bind(imageView,"file:/sdcard/test.gif", imageOptions);
  21. //带回调
  22. x.image().bind(imageView, url, imageOptions,newCallback.CommonCallback<Drawable>(){...});
  23. x.image().loadDrawable(url, imageOptions,newCallback.CommonCallback<Drawable>(){...});
  24. x.image().loadFile(url, imageOptions,newCallback.CommonCallback<File>(){...});
  1. //加载ImageView的图片资源,可以加载本地、网络
  2. BitmapUtils bUtils =newBitmapUtils(this); bUtils.display(imageView,"http://image.tianjimedia.com/uploadImages/2013/221/JGR58NXB5V62.jpg");
  • log的使用
  1. //设置是否允许输出对应级别的,false为不输出
  2. LogUtils.allowE=false;
  3. //以error的形式输出日志
  4. LogUtils.e("ViewUtils调用成功!");





原文地址:https://www.cnblogs.com/wisemen/p/5836789.html