首页 > 学院 > 开发设计 > 正文

xutils3的应用

2019-11-06 10:00:21
字体:
来源:转载
供稿:网友

      以前项目都是和团队一起做 ,现在来了一个小公司。需要自己独自带队了。自己独自做一个项目,选择框架时,就用到了xutils3。自己结合资料和源码做出的总结

 1.先介绍xutils3

     xUtils3 是 xUtils 的升级版,功能和性能都在提高

     xUtils3 主要有四大模块:注解模块,联网模块,图片加载模块,数据库模块;

注解模块:用于在 Activity 或者 Fragment 中初始化布局文件,便于代码更加简洁;联网模块:xUtils3 支持超大文件(超过2G)上传,更全面的http请求协议支持(11种谓词),拥有更加灵活的 ORM,更多的事件注解支持且不受混淆影响;图片加载模块:加载图片很方便并且不用担心内存溢出,还可以图片绑定支持 gif(受系统兼容性影响, 部分 gif 文件只能静态显示), webp; 支持圆角, 圆形, 方形等裁剪,支持自动旋转.数据库模块:数据库 api 简化提高性能, 达到和 greenDao 一致的性能

xUtils3 的主要功能

1、注解2、联网请求文本数据3、大文件下载

4、大文件上传5、请求图片6、数据库模块达到和 greenDao 一致的性能

下载地址& 运行 xUtils3  案例

 https://github.com/wyouflf/xUtils3

今天主要讲连网模块

 第一步要导入library 

有两种方法 

第一方法:本地下载导入

第二方法 :

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

compile 'org.xutils:xutils:3.3.42'
第二步:创建  application ,进行初始化
Application
//xUtils3初始化x.Ext.init(this);// 是否输出debug日志, 开启debug会影响性能.x.Ext.setDebug(true);
                                                                                                                
                         
第三步 :就可以用 了,首先教大家 get,post方法,进行文本传送
直接上代码吧
        //1.Get请求        //2.Post请求        RequestParams params = new RequestParams("http://api.m.mtime.cn/PageSubArea/TrailerList.api");        params.addBodyParameter("username","123456");        params.addBodyParameter("passWord","password");//        params.addParameter();        params.addParameter("string","object");//        params.addHeader();        params.addHeader("name","value");//        params.addBodyParameter();        params.addBodyParameter("name","file");                x.http().post(params, new Callback.CommonCallback<String>() {            @Override            public void onSuccess(String result) {                Log.e("TAG", "xUtis3联网请求成功==" + result);//                textView.setText("Get请求的结果——————" + result);                Toast.makeText(XUtils3NetActivity.this, result, Toast.LENGTH_LONG).show();                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://y-t-s-c.com/APP/ytsc.apk");//数据的链接    //设置保存数据    params.setSaveFilePath(Environment.getExternalStorageDirectory() + "/atguigu/ytsc.apk");    //设置是否可以立即取消下载    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);        }    });
然后是 文件上传的代码
        RequestParams params = new RequestParams("文件上传的url");        //以表单方式上传        params.setMultipart(true);        //设置上传文件的路径        params.addBodyParameter("File", new File(Environment.getExternalStorageDirectory() + "/atguigu/480.mp4"), null, "oppo.mp4");//        params.addBodyParameter("name","value","contenttype","filename");        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);            }        });

 

       

   

      


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表