Android_xUtils3介绍及使用

一:xUtils简介

xUtils 包含了orm, http(s), image, view注解, 但依然很轻量级(246K), 并且特性强大, 方便扩展:

  • 稳定的基石AbsTask和统一的回调接口Callback, 任何异常, 即使你的回调方法实现有异常都会进入onError, 任何情况下onFinished总会让你知道任务结束了.
  • 基于高效稳定的orm工具, http模块得以更方便的实现cookie(支持domain, path, expiry等特性)和 缓存(支持Cache-Control, Last-Modified, ETag等特性)的支持.
  • 有了强大的http及其下载缓存的支持, image模块的实现相当的简洁, 并且支持回收被view持有, 但被Mem Cache移除的图片, 减少页面回退时的闪烁..
  • view注解模块仅仅400多行代码却灵活的支持了各种View注入和事件绑定, 包括拥有多了方法的listener的支持.

二:使用前的配置

1:使用Gradle构建时添加一下依赖即可:

compile 'org.xutils:xutils:3.5.0'  或者   compile 'org.xutils:xutils:3.3.40'

2:需要添加的权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
3: 初始化

// 在application的onCreate中初始化
@Override
public void onCreate() {
    super.onCreate();
    x.Ext.init(this);
    x.Ext.setDebug(BuildConfig.DEBUG); // 是否输出debug日志, 开启debug会影响性能.
    ...
}


三:开始使用

1: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*/)
private void onTestBaidu1Click(View view) {
...
}


2:Bitmap图片

ImageOptions   imageOptions = new ImageOptions.Builder()  
         .setSize(DensityUtil.dip2px(120), DensityUtil.dip2px(120))  
         .setRadius(DensityUtil.dip2px(5))  
         // 如果ImageView的大小不是定义为wrap_content, 不要crop.  
         .setCrop(true) // 很多时候设置了合适的scaleType也不需要它.  
         // 加载中或错误图片的ScaleType  
         //.setPlaceholderScaleType(ImageView.ScaleType.MATRIX)  
         .setImageScaleType(ImageView.ScaleType.CENTER_CROP)  
         .setLoadingDrawableId(R.mipmap.ic_launcher)  
         .setFailureDrawableId(R.mipmap.ic_launcher)  
         .build();  
 x.image().bind(imageView, url, imageOptions);  
  
 // assets file  
 x.image().bind(imageView, "assets://test.gif", imageOptions);  
  
 // local file  
 x.image().bind(imageView, new File("/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, new Callback.CommonCallback<Drawable>() {...});  
 x.image().loadDrawable(url, imageOptions, new Callback.CommonCallback<Drawable>() {...});  
 x.image().loadFile(url, imageOptions, new Callback.CommonCallback<File>() {...}); 


3:DB数据库

DbManager.DaoConfig daoConfig = new DbManager.DaoConfig()  
            .setDbName("test.db")  
            // 不设置dbDir时, 默认存储在app的私有目录.  
            .setDbDir(new File("/sdcard")) // "sdcard"的写法并非最佳实践, 这里为了简单, 先这样写了.  
            .setDbVersion(2)  
            .setDbOpenListener(new DbManager.DbOpenListener() {  
                @Override  
                public void onDbOpened(DbManager db) {  
                    // 开启WAL, 对写入加速提升巨大  
                    db.getDatabase().enableWriteAheadLogging();  
                }  
            })  
            .setDbUpgradeListener(new DbManager.DbUpgradeListener() {  
                @Override  
                public void onUpgrade(DbManager db, int oldVersion, int newVersion) {  
                    // TODO: ...  
                    // db.addColumn(...);  
                    // db.dropTable(...);  
                    // ...  
                    // or  
                    // db.dropDb();  
                }  
            });



4:Http请求网络

1:普通

RequestParams requestParams = new RequestParams("网络地址");
                    requestParams.addQueryStringParameter("参数名称",值);
                    x.http().get(requestParams,new Callback.CommonCallback<String>(){
			//请求成执行的方法
                        @Override
                        public void onSuccess(String result) {
                            Log.i("TAG",result);
                        }
			//请求失败执行的方法
                        @Override
                        public void onError(Throwable ex, boolean isOnCallback) {

                        }

                        @Override
                        public void onCancelled(CancelledException cex) {

                        }

                        @Override
                        public void onFinished() {

                        }
                    });

2:被调用的方式

写一个方法,调用此方法时需要传入Map集合,在此遍历集合添加,上面的方法是直接添加

public void get(String url, Map<String, String> map, final IResponse response) {
        RequestParams params = new RequestParams(url);
        for (Map.Entry<String, String> entry : map.entrySet()) {
            params.addQueryStringParameter(entry.getKey(), entry.getValue());
        }

        x.http().get(params, new Callback.CommonCallback<String>() {
            @Override
            public void onSuccess(String result) {
                Log.i(TAG, "onSuccess: " + result);
                response.onSuccess(result);
            }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {
                Log.e(TAG, "onError: " + ex.getMessage());
                response.onFailed(ex.getMessage());
            }

            @Override
            public void onCancelled(CancelledException cex) {

            }

            @Override
            public void onFinished() {

            }
        });
    }






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值