先从下图中大致了解下Xutils主要的一些功能:(图片来自互联网)
随后在看看在Android Studio中的配置吧:(图片依然来自互联网)
现在才开始正文能 别急
做事一定要有条理,所以 我们就一条一条来萝莉(罗列);
数据库模块:
创建数据库:
DbManager.DaoCinfig daoConfig=new DbManager.DaoCinfig()
.setDbName(string),不设置的话默认是xutil的DB
.setTableCreateListener(Table)//表创建的监听
setAllowTransaction(bool)是否允许事务,默认true;
//数据库路径,不设置的话 默认在安装路径
.setDbDir(file dir)
.setDopenListener()//数据库打开的监听
.setDbUpfradeListener()//数据库更新监听
.setDbVersion(int)//设置数据库版本号
;
DbManager db=x.getDb(daoConfig);
-------------------------------
xutils数据库模块使用了ORM技术,不需要写sql语句;
db.save(entity);可以传入Liset集合//会将这个对象自动映射成表;
【为类添加@Table注解(name="_taleName",onCreated="")当表第一次创建时onCreated调用(可以在创建是添加数据)】
@Column(name="字段名",isID="是否主键bool",autoGen="是否自增长",property="约束(not null)")
创建表时,需要该entity有2个构造,如果没有将创建失败;
删除数据库:db.dropDb();
删除表:
WhereBuilder b=WhereBuilder.b();
b.expr("id"="1");
db.delete(bean.class,b);
查询数据:
db.findFirst(Class );//查询第一条数据
db.findAll();//查询所有
db.findDbModelAll(SqlInfo);
db.findDbModelFirst(SqlInfo);
db.dinfbyId(Class,Object);//通过ID 的方式查询;
//带查询条件
db.selector(bean.class).出方法;
修改表中数据:
db.update(Class<>,whereBuilder,keyvalue);
修改第一条:
bean bean=db.findFirst(Class );
b.setName("xx");
db.update(b,"修改的列名","");
修改其他数据:
WhereBuilder b=WhereBuilder.b();
b.and("id","=",bean.getId());
KeyValue name=new KeyValue("name",“xx);
db.update(bean.class,b,name);
修改其他数据:
bean.setName("xxx");
db.saveOrUpdate(bean);
删除表中的数据:
db.delete(bean.class);//删除表中所有的数据
db.delete(bean.class,wb(添加条件));
一对多的关系
:一对多关系 这张图就能诠释了吧;这次图片不是来源于网络了
返回DeModel的查询:
sql语句不建议写select * ....
DbModel:是以key,value的形式将查询的字段保存起来 返回给我们;
=======================================================================================================================
网络模块:
Callback.Cancelable cancelable=x.http().get(par){};
1.执行cancelable.cancel();时,方法中的onCancelled(xx);才会被执行;
2.onError(xx,xx);中的bool为false 说明异常信息 不是来源于回调;
其他请求方式:
x.http().request(HttpMethod.xxxx,par,calback);
文件:
par.setMultpart(true);//启用表单
par.addBodyParamter("file",new File(path));
x.http().post(par,callback);
下载:
new par(url);
par.setSaveFilePath();//设置文件下载的目录(会自动创建);
par.setAutoRename(true);//true时,会自动设置文件的名字;
x.http().post(par,
Progressallable);
1.onWaiting()在网络请求之前被调用;
2.onStarted();网络请求开始的时候;
3.onLoading();下载时不断调用;
缓存:
par.setCacheMaxAge(ms);//设置缓存时间
x.http().get(par,CacheCallback());
1.onCache(String result:缓存的内容);如果返回true:相信本地缓存;及在缓存时间内再次请求,加载缓存数据 不在访问网络;
图片模块:
x.image().bind(iv.url);
x.image().bind(iv.url,ImageOptions);
x.image().bind(iv.url,CommonCallback);
x.image().bind(iv.url,ImageOptions,CommonCallback);
ImageOptions options=new ImageOptions
.Bilder()
//设置图片的质量
.setConfig(Config.RGB.565)
//设置为true时 图片加载有个淡入效果
.setFadeIn(bool)
.setCrop(bool)和.setSize() 成对使用 Crop为true时,size生效
//true:展示为圆形
.setCirculat(bool)
.setAnimation(animation)
//true:待展示图片 将旋转图片
.setAutoRotate(bool)
//加载失败时的图片
.setFailureDrawable(drawable)
//图片加载过程中显示的图片
.setLoadingDrawableId(int)
//默认为true,为true时 显示加载过程中的图片
.setForceLoadingDrawable(bool)
//是否忽略GIF图,默认为忽略
.setIgnoneGif(bool)
//网略请求图片时,可以通过ParamsBuilder,添加参数
.setParamsBUilder(ParamsBuilder)
//设置加载失败 或者成功图片的Type
.setPlaceholderScaleType(ScaleType)
//设置拐角的弧度
.setRadius(int)
//true;图片为正方形
.setSquare(bool)
//设置是否使用缓存 默认为true
.setUserMemCache(bool)
最后的注解模块呢 分为activity、fragment、viewholder、event,这么几块;大家自寻探索吧;
下面是一个封装后的Xutils工具类
public class XutilsTool {
/**
* 发送get请求
* @param <T>
*/
public static Cancelable Get(String url, Map map, CommonCallback callback){
RequestParams params=new RequestParams(url);
if(null!=map){
for(Map.Entry entry : map.entrySet()){
params.addQueryStringParameter(entry.getKey(), entry.getValue());
}
}
Cancelable cancelable = x.http().get(params, callback);
return cancelable;
}
/**
* 发送post请求
* @param <T>
*/
public static Cancelable Post(String url, Map map, CommonCallback callback){
RequestParams params=new RequestParams(url);
if(null!=map){
for(Map.Entry entry : map.entrySet()){
params.addParameter(entry.getKey(), entry.getValue());
}
}
Cancelable cancelable = x.http().get(params, callback);
return cancelable;
}
/**
* 上传文件
* @param <T>
*/
public static Cancelable UpLoadFile(String url, Map map, CommonCallback callback){
RequestParams params=new RequestParams(url);
if(null!=map){
for(Map.Entry entry : map.entrySet()){
params.addParameter(entry.getKey(), entry.getValue());
}
}
params.setMultipart(true);
Cancelable cancelable = x.http().get(params, callback);
return cancelable;
}
/**
* 下载文件
* @param <T>
*/
public static Cancelable DownLoadFile(String url, String filepath, CommonCallback callback){
RequestParams params=new RequestParams(url);
//设置断点续传
params.setAutoResume(true);
params.setSaveFilePath(filepath);
Cancelable cancelable = x.http().get(params, callback);
return cancelable;
}
}