您的位置:首页 > 其它

Xutils简介和基本使用

2017-09-02 14:03 309 查看
特性:
支持超大文件(超过2G)上传
更全面的http请求协议支持(11种谓词)
拥有更加灵活的ORM, 和greenDao一致的性能
更多的事件注解支持且不受混淆影响...
图片绑定支持gif(受系统兼容性影响, 部分gif文件只能静态显示), webp; 支持圆角, 圆形, 方形等裁剪, 支持自动旋转...


四大模块:

xUtils3主要包含注解模块、网络模块、图片模块和数据库模块

依赖:

compile 'org.xutils:xutils:3.3.36'


权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
操作数据库最好加上读取内存权限


初始化

// 在application的onCreate中初始化
@Override
public void onCreate() {
super.onCreate();
x.Ext.init(this);
}
//数据库初始化
public static DbManager getDb(){
DbManager.DaoConfig config = new DbManager.DaoConfig().setDbName("wyb.db").setDbDir(new File("/mnt/sdcard")).setDbVersion(1);
DbManager db = x.getDb(config);
return db;
}

在AndroidManifest文件中注册MyApp
<application
android:name=".MyApp"
...
</application>


注解模块:

通过注解的方式加载布局和获取控件

//放在对应的Activity类上面加载布局文件   注意要将onCreate()中的setContentView(R.layout.activity_main);注释掉

@ContentView(R.layout.activity_main)
public class MainActivity extends AppCompatActivity {
//找控件
@ViewInject(R.id.tv_title)
TextView tv_title;
//监听事件
@Event(type =事件类型.class, value = 对应的控件R.id.**)
}


网络模块:

注意:

1.可以通过接口回调设置缓存

2.关于query参数? http请求可以通过 header, url, body(请求体)传参; query参数是url中问号(?)后面的参数.

3.关于body参数? body参数只有PUT, POST, PATCH, DELETE(老版本RFC2616文档没有明确指出它是否支持, 所以暂时支持)请

RequestParams params = new RequestParams(url);
//关于query参数
params.addQueryStringParameter("", "");
//关于body参数
params.addBodyParameter("", "");
//下载文件的保存路径
params.setSaveFilePath(Sdpath+"文件名");
//自动修改文件名字
params.setAutoRename(true);
//分段
params.setMultipart(true);

//new Callback.CacheCallback<object>缓存 会多重写一个方法public boolean onCache(String result) {}
onCache()返回值 true代表支持缓存 如果缓存时间没有过期就不走网络请求,false不支持缓存
x.http().get(params, new Callback.CommonCallback<object>() {
@Override
public void onSuccess(File result) {
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
}
@Override
public void onCancelled(CancelledException cex) {
}
@Override
public void onFinished() {
}
});


图片模块:

ImageOptions options = new ImageOptions.Builder();
/**
* 加载图片
* //通过ImageOptions.Builder().set方法设置图片的属性
* ImageOptions imageOptions= new ImageOptions.Builder().setFadeIn(true).build(); //淡入效果
* //ImageOptions.Builder()的一些其他属性:
* .setCircular(true) //设置图片显示为圆形
* .setSquare(true) //设置图片显示为正方形
* .setCrop(true).setSize(200,200) //设置大小
* .setAnimation(animation) //设置动画
* .setFailureDrawable(Drawable failureDrawable) //设置加载失败的动画
* .setFailureDrawableId(int failureDrawable) //以资源id设置加载失败的动画
* .setLoadingDrawable(Drawable loadingDrawable) //设置加载中的动画
* .setLoadingDrawableId(int loadingDrawable) //以资源id设置加载中的动画
* .setIgnoreGif(false) //忽略Gif图片
* .setParamsBuilder(ParamsBuilder paramsBuilder) //在网络请求中添加一些参数
* .setRaduis(int raduis) //设置拐角弧度
* .setUseMemCache(true) //设置使用MemCache,默认true
*/
根据需求自定义添加
x.image().bind(控件, 地址, options设置图片加载属性);


数据库模块:

1.注意要看上面的初始化

可以根据需求封装一个JavaBean

用来将数据库表和对象关联

//这是一个简单的案例
@Table(name = "Student", onCreated = "")
public class Student {
/**
* name = "id",数据库表中的字段
* isId = true,是否是主键
* autoGen = true,是否自增
* property = "NOT NULL" 不为空
*/
@Column(name = "id", isId = true, autoGen = true, property = "NOT NULL")
private int id;
//必须提供无参构造
...
}
APP类定义数据库初始化的类
DbMeass db = APP类.getDb();//返回值得到db对象
//可以通过db调取增删改查的方法
介绍一些简单方法
//添加
db.save(Student对象);
//查询第一条
db.findFirst(Student.class);
//修改  先查询一条在修改值
Student student2 = db.findById(Student.class, "2");
student2.setName("老王");
db.update(student2, "name");
//删除表
db.dropTable(Student.class);
//删除库
db.dropDb();
//其他方法可以自己去体验
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: