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

  • 相关阅读:
    JavaScript Patterns 5.7 Object Constants
    JavaScript Patterns 5.6 Static Members
    JavaScript Patterns 5.5 Sandbox Pattern
    JavaScript Patterns 5.4 Module Pattern
    JavaScript Patterns 5.3 Private Properties and Methods
    JavaScript Patterns 5.2 Declaring Dependencies
    JavaScript Patterns 5.1 Namespace Pattern
    JavaScript Patterns 4.10 Curry
    【Android】如何快速构建Android Demo
    【Android】如何实现ButterKnife
  • 原文地址:https://www.cnblogs.com/wangying222/p/5590437.html
Copyright © 2011-2022 走看看