xUtils3,xutils3github
1.简介
xUtils3 是 xUtils 的升级版,功能和性能都在提高,xUtils3 主要有四大模块:注解模块,联网模块,图片加载模块,数据库模块;
注解模块:
用于在 Activity 或者 Fragment 中初始化布局文件,便于代码更加简洁;
联网模块:
xUtils3 支持超大文件(超过 2G)上传,更全面的 http 请求协议支持(11 种谓词),拥有更加灵活的 ORM,更多的事件注解支持且不受混淆影响;
图片加载模块:
加载图片很方便并且不用担心内存溢出,还可以图片绑定支持 gif(受系统兼容性影响, 部分 gif 文件只能静态显示), webp; 支持圆角, 圆形, 方形等裁剪,支持自动旋转.
数据库模块:
数据库 api 简化提高性能, 达到和 greenDao 一致的性能
2.注解模块
①在 Activity 中使用注解
1.在 Application 的 oncreate 方法中加入下面代码: x.Ext.init(this);
2.在 Activity 的 oncreate 方法中加入下面代码: x.view().inject(this);
3.加载当前的 Activity 布局需要如下注解: @ContentView 加入到 Activity 的上方
4.给 View 进行初始化需要如下注解: @InjectView
5.处理控件的各种响应事件需要如下注解: @Envent
@Event(value = R.id.btn_database)
private void database(View view){
Toast.makeText(XUtils3Activity.this, "进入数据库模块单独的",Toast.LENGTH_SHORT).show();
}
②在 Fragment 中使用注解
在onCreateView()中return super.onCreateView(inflater, container, savedInstanceState);改为return x.view().inject(this,inflater,container);
@ContentView(R.layout.fragment_demo)
public class DemoFragment extends Fragment {
@ViewInject(R.id.btn_fragment)
private Button button;
private Context context;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context =getContext();
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// return super.onCreateView(inflater, container, savedInstanceState);
return x.view().inject(this,inflater,container);
}
}
3.联网模块
①xUtils3 的 Get 和 Post 请求文本
//1.Get请求
//2.Post请求
RequestParams params = new RequestParams("http://api.m.mtime.cn/PageSubArea/TrailerList.api");
x.http().post(params, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String result) {
Log.e("TAG", "xUtis3联网请求成功==" + result);
// textView.setText("Get请求的结果——————" + result);
textView.setText("Post请求的结果——————" + result);
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
Log.e("TAG", "xUtis3联网请求失败==" + ex.getMessage());
textView.setText("xUtis3联网请求失败==" + ex.getMessage());
}
@Override
public void onCancelled(CancelledException cex) {
Log.e("TAG", "onCancelled==" + cex.getMessage());
}
@Override
public void onFinished() {
Log.e("TAG","onFinished==");
}
});
②xUtils3 文件下载
RequestParams params = new RequestParams("http://vfx.mtime.cn/Video/2016/09/15/mp4/160915092608935956_480.mp4");
//设置保存数据
params.setSaveFilePath(Environment.getExternalStorageDirectory() + "/atguigu/480.mp4");
//设置是否可以立即取消下载
params.setCancelFast(true);
//设置是否自动根据头信息命名
params.setAutoRename(false);
//设置断点续传
params.setAutoResume(true);
params.setExecutor(new PriorityExecutor(3, true));//自定义线程池,有效的值范围[1, 3], 设置为3时, 可能阻塞图片加载.
x.http().get(params, new Callback.ProgressCallback<File>() {
/**
* 当下载成功的时候回调这个方法,并且把下载到哪个路径回传过来
* @param file
*/
@Override
public void onSuccess(File file) {
Log.e("TAG","onSuccess=="+file.toString());
Toast.makeText(XUtils3NetActivity.this, "onSuccess=="+file.toString(), Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
Log.e("TAG","onError=="+ex.getMessage());
}
@Override
public void onCancelled(CancelledException cex) {
Log.e("TAG","onCancelled=="+cex.getMessage());
}
@Override
public void onFinished() {
Log.e("TAG","onFinished==");
}
@Override
public void onWaiting() {
Log.e("TAG","onWaiting==");
}
@Override
public void onStarted() {
Log.e("TAG","onStarted==");
}
@Override
public void onLoading(long total, long current, boolean isDownloading) {
progressbar.setMax((int) total);
progressbar.setProgress((int) current);
Log.e("TAG", "onLoading=="+current+"/"+total+",isDownloading=="+isDownloading);
}
});
③xUtils3 大文件上传
RequestParams params = new RequestParams("http://192.168.1.16:8080/FileUpload/FileUploadServlet");
//以表单方式上传
params.setMultipart(true);
//设置上传文件的路径
params.addBodyParameter("File",new File(Environment.getExternalStorageDirectory()+"/atguigu/480.mp4"),null,"oppo.mp4");
x.http().post(params, new Callback.ProgressCallback<File>() {
/**
* 当下载成功的时候回调这个方法,并且把下载到哪个路径回传过来
* @param file
*/
@Override
public void onSuccess(File file) {
Log.e("TAG", "onSuccess==" + file.toString());
Toast.makeText(XUtils3NetActivity.this, "onSuccess==" + file.toString(), Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
Log.e("TAG", "onError==" + ex.getMessage());
}
@Override
public void onCancelled(CancelledException cex) {
Log.e("TAG", "onCancelled==" + cex.getMessage());
}
@Override
public void onFinished() {
Log.e("TAG", "onFinished==");
}
@Override
public void onWaiting() {
Log.e("TAG", "onWaiting==");
}
@Override
public void onStarted() {
Log.e("TAG", "onStarted==");
}
@Override
public void onLoading(long total, long current, boolean isDownloading) {
progressbar.setMax((int) total);
progressbar.setProgress((int) current);
Log.e("TAG", "onLoading==" + current + "/" + total + ",isDownloading==" + isDownloading);
}
});

