zoukankan      html  css  js  c++  java
  • Xutils3的使用

    Xutils是前两年很火的一个三方库(githup地址),是一个工具类,分为4个模块:DbUtils、HttpUtils、ViewUtils、 BitmapUtils,还有一个非常使用功能就是LogUtils,可以用来输出Log日志。这个第三方库已经很久没有更新了,对最新的6.0系统支持 也不是很好,所以现在出了一个新的Xutils3(githup地址),今天就来看看新的Xutils3有什么改变。

    我们先来看看Xutils的4个模块的使用:

    使用记得加上权限:

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

    dBUtils:

    用来操作数据库

    //创建数据库
    1 DbUtils dUtils = DbUtils.create(MainActivity.this, "Student");
    2             try {
    3                 //创建表,表名为包名_StudentInfo
    4                 dUtils.createTableIfNotExist(StudentInfo.class);
    5             } catch (DbException e) {
    6                 e.printStackTrace();
    7             }

    BitmapUtils:

    用来加载ImageView的图片资源,可以加载本地、网络

    	 1 BitmapUtils bUtils = new BitmapUtils(this); 2 bUtils.display(imgv,"http://image.tianjimedia.com/uploadImages/2013/221/JGR58NXB5V62.jpg"); 

    viewUtils:

    可以用来代替findViewbyId,也可以用来给控件添加点击事件

    1.  1     // 使用ViewUtils绑定控件
       2     @ViewInject(R.id.radioGroup)
       3     private RadioGroup rg;
       4     @ViewInject(R.id.imgv)
       5     private ImageView imgv;
       6     @ViewInject(R.id.txtv1)
       7     private TextView txtv;
       8 
       9     // ViewUtils支持绑定点击事件
      10     @OnClick(R.id.btn)
      11     public void btnShow(View view) {
      12 
      13 记得在Activity的oncreate方法里面写上下面的代码:
      14 
      15     // 注入绑定事件
      16         ViewUtils.inject(this);

    HttpUtils:

    用来上传文件,下载文件

     1 HttpUtils hUtils = new HttpUtils(5 * 1000);
     2             hUtils.send(HttpMethod.GET, "http://blog.csdn.net/qq379454816",
     3                     new RequestCallBack<String>() {
     4                         @Override
     5                         public void onSuccess(ResponseInfo<String> responseInfo) {
     6                             txtv.setText(responseInfo.result);
     7                         }
     8                         @Override
     9                         public void onFailure(HttpException error, String msg) {
    10                             txtv.setText(error.getMessage() + "," + msg);
    11                         }
    12                     });

    最后来演示一个LogUtils的使用:

    1 //设置是否允许输出对应级别的,false为不输出
    2             LogUtils.allowE=false;
    3             //以error的形式输出日志
    4             LogUtils.e("ViewUtils调用成功!");

    ok,就简单地介绍一下其使用,4个主要模块使用还是有一定规律的,除了DbUtils使用create创建对象外其余的3个模块都是使用new创建对象。下面来看下Xutils3:

    • xUtils3变化较多所以建立了新的项目不在旧版(github.com/wyouflf/xUtils)上继续维护, 相对于旧版本:
      1. HTTP实现替换HttpClient为UrlConnection, 自动解析回调泛型, 更安全的断点续传策略.
      2. 支持标准的Cookie策略, 区分domain, path...
      3. 事件注解去除不常用的功能, 提高性能.
      4. 数据库api简化提高性能, 达到和greenDao一致的性能.
      5. 图片绑定支持gif, webp; 支持圆角, 圆形, 方形等裁剪, 支持自动旋转...

    以上是官方的说明,下面来看具体使用。

    Xutils3的使用方式和Xutils有很大的改变,所以请新建一个工程,按照下面的步骤操作:

    1、下载类库(类库下载),将下载文件解压,里面有一个jar包和一个文件夹,都复制到lib目录下。

    2、添加权限:网络访问权限和SD卡写入权限,这个和Xutils是一样的

    3、然后新建一个Application类,在里面对Xutils3做初始化工作,代码如下:

    1     @Override
    2     public void onCreate() {
    3         super.onCreate();
    4         // 初始化
    5         x.Ext.init(this);
    6         // 设置是否输出debug
    7         x.Ext.setDebug(true);
    8     }

    以上弄完就可以进入使用阶段了。

    xutils3和Xutils使用方式有一些区别,以前是使用new得到各模块的对象,现在使用:x.模块名()得到对象,回调接口也使用统一的一个,回调接口支持泛型。

    BitMapUtils的使用:

     1 // 设置加载图片的参数
     2         ImageOptions options = new ImageOptions.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         // 加载图片
    14         x.image().bind(imgv, imagUrl, options, new CommonCallback<Drawable>() {
    15             @Override
    16             public void onSuccess(Drawable arg0) {
    17                 LogUtil.e("下载成功");
    18             }
    19             @Override
    20             public void onFinished() {
    21                 LogUtil.e("下载完成");
    22             }
    23             @Override
    24             public void onError(Throwable arg0, boolean arg1) {
    25                 LogUtil.e("下载出错," + arg0.getMessage());
    26             }
    27             @Override
    28             public void onCancelled(CancelledException arg0) {
    29                 LogUtil.e("下载取消");
    30             }
    31         });
    32         // 加载本地图片
    33         // x.image().bind(imgv, "assets://test.gif", options);
    34         // x.image().bind(iv_big_img, new
    35         // File("/sdcard/test.gif").toURI().toString(), imageOptions);
    36         // x.image().bind(iv_big_img, "/sdcard/test.gif", imageOptions);
    37         // x.image().bind(iv_big_img, "file:///sdcard/test.gif", imageOptions);
    38         // x.image().bind(iv_big_img, "file:/sdcard/test.gif", imageOptions);

    HttpUtlis的使用:

     1 // 请求参数
     2         RequestParams params = new RequestParams("http://www.baidu.com");
     3         x.http().get(params, new CommonCallback<String>() {
     4             @Override
     5             public void onCancelled(CancelledException arg0) {
     6             }
     7             @Override
     8             public void onError(Throwable arg0, boolean arg1) {
     9             }
    10             @Override
    11             public void onFinished() {
    12             }
    13             @Override
    14             public void onSuccess(String arg0) {
    15                 // 成功下载,显示到txtv上面
    16                 txtv.setText(arg0);
    17             }
    18         });

    viewUtils的使用基本没变,只是绑定点击事件的时候有些出入:

    1 // 使用ViewUtils绑定控件
    2     @ViewInject(R.id.txtv)
    3     private TextView txtv;
    4     @ViewInject(R.id.imgv)
    5     private ImageView imgv;

    绑定事件:

    1 /**
    2      * 使用BitmapUtils显示图片
    3      * 
    4      * 使用ViewUtils设置按钮的点击事件,方法必须要私有化, 参数格式和type的参数一致,为了混淆方便,方法名要以Event或者Click结尾
    5      * type可以不写,默认是点击事件类型
    6      */
    7     @Event(value = R.id.btn, type = View.OnClickListener.class)
    8     private void btnClick(View view) {
    1 /**
    2      * 使用BitmapUtils显示图片
    3      * 
    4      * 使用ViewUtils设置按钮的点击事件,方法必须要私有化, 参数格式和type的参数一致,为了混淆方便,方法名要以Event或者Click结尾
    5      * type可以不写,默认是点击事件类型
    6      */
    7     @Event(value = R.id.btn, type = View.OnClickListener.class)
    8     private void btnClick(View view) {

    最后来演示DbUtils:

    先建一个类,用来生成数据库中的表,这里新建一个StudentInfo类(注意里面的@标签的使用,使用这些标签生成表的结构信息)内容如下:

     1 @Table(name = "info")
     2 public class StudentInfo {
     3     @Column(name = "id", isId = true)
     4     private int id;
     5     @Column(name = "name")
     6     private String name;
     7     @Column(name = "age")
     8     private int age;
     9     public int getId() {
    10         return id;
    11     }
    12     public void setId(int id) {
    13         this.id = id;
    14     }
    15     public String getName() {
    16         return name;
    17     }
    18     public void setName(String name) {
    19         this.name = name;
    20     }
    21     public int getAge() {
    22         return age;
    23     }
    24     public void setAge(int age) {
    25         this.age = age;
    26     }
    27 }
    28 
    29 然后看如何使用:
    30 
    31     DbManager.DaoConfig daoConfig = new DaoConfig()
    32                 // 数据库的名字
    33                 .setDbName("SudentInfo")
    34                 // 保存到指定路径
    35                 // .setDbDir(new
    36                 // File(Environment.getExternalStorageDirectory().getAbsolutePath()))
    37                 // 数据库的版本号
    38                 .setDbVersion(1)
    39                 // 数据库版本更新监听
    40                 .setDbUpgradeListener(new DbUpgradeListener() {
    41                     @Override
    42                     public void onUpgrade(DbManager arg0, int arg1, int arg2) {
    43                         LogUtil.e("数据库版本更新了!");
    44                     }
    45                 });
    46         DbManager manager = x.getDb(daoConfig);
    47         try {
    48             //创建对象,用来生成表
    49             StudentInfo info = new StudentInfo();
    50             info.setAge(16);
    51             info.setName("小花");
    52             //创建表
    53             manager.saveOrUpdate(info);
    54         } catch (DbException e) {
    55             e.printStackTrace();
    56         }

    下载xutils3jar包:http://download.csdn.net/detail/sinat_32804317/9551171

  • 相关阅读:
    Nodejs express框架 浅析
    Nodejs 基础知识 浅析
    Angular1 基础知识 浅析(含锚点)
    canvas2D 基础知识 浅析
    1018 内置对象
    1017 内置对象
    1016 Repeater-重复器
    1014 简单控件和复合控件
    1013 认识WebForm
    0929 MDI窗体容器 权限设置
  • 原文地址:https://www.cnblogs.com/wangying222/p/5590437.html
Copyright © 2011-2022 走看看