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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM