xUtils3的简单使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dangnianmingyue_gg/article/details/60616945

1.xUtils3简介

xUtils3 是 xUtils 的升级版,功能和性能都在提高, xUtils3 主要有四大模块:注解模块,联网模块,图片加载模块,数据库模块;

注解模块:
用于在 Activity 或者 Fragment 中初始化布局文件,便于代码更加简洁;

联网模块:
xUtils3 支持超大文件(超过 2G)上传,更全面的 http请求协议支持(11种谓词),
拥有更加灵活的 ORM,更多的事件注解支持且不受混淆影响;

图片加载模块:
加载图片很方便并且不用担心内存溢出,还可以图片绑定支持 gif(受系统兼容
性影响, 部分 gif 文件只能静态显示), webp; 支持圆角, 圆形, 方形等裁剪,支持自动旋转.

数据库模块:
数据库 api 简化提高性能, 达到和 greenDao 一致的性能

2.xUtils3 的主要功能和使用

1、注解
2、联网请求文本数据
3、大文件下载
4、大文件上传
5、请求图片
6、数据库模块达到和 greenDao 一致的性能

使用:
在build.gradle中添加:

compile 'org.xutils:xutils:3.3.36'

3.xUtils3 注解模块

主要有在 Activity 中使用 xUtils3 的注解和在 Fragment 中使用 xUtils3 的注解两种情况

1.在 Activity 中使用注解初始化布局

1).在 Application 的 oncreate 方法中加入下面代码:

x.Ext.init(this);

2).在 Activity 的 oncreate 方法中加入下面代码:

x.view().inject(this);

3).加载当前的 Activity 布局需要如下注解:

@ContentView 加入到 Activity 的上方

4).给 View 进行初始化需要如下注解:

@InjectView

5).处理控件的各种响应事件需要如下注解:

@Envent(value = R.id.btn_annotation)

使用注解后你会发现写代码更加简洁了

2.在 Fragment 中使用注解初始化布局

使用方法基本跟在Activity中一样,区别是在onCreateView中,代码如下:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        return x.view().inject(this,inflater,container);
}

4.xUtils3 联网模块

1.使用 xUtils3 的 Get 、Post请求文本

private void getAndPostNet() {
        //1.Get请求 x.http().get
        //2.Post请求 x.http().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);

            }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {
                Log.e("TAG", "xUtis3联网请求失败==" + ex.getMessage());

            }

            @Override
            public void onCancelled(CancelledException cex) {
                Log.e("TAG", "onCancelled==" + cex.getMessage());
            }

            @Override
            public void onFinished() {
                Log.e("TAG","onFinished==");
            }
        });

    }

2.使用 xUtils3 文件下载&断点续传

下载文件代码

private void downloadFile() {
        RequestParams params = new RequestParams("http://vfx.mtime.cn/Video/2016/09/15/mp4/160915092608935956_480.mp4");
        //设置保存数据
        params.setSaveFilePath(Environment.getExternalStorageDirectory() + "/mp4/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);

            }
        });
    }

3.使用 xUtils3 上传文件

private void uploadFile() {
        RequestParams params = new RequestParams("http://192.168.1.16:8080/FileUpload/FileUploadServlet");
        //以表单方式上传
        params.setMultipart(true);
        //设置上传文件的路径
        params.addBodyParameter("File",new File(Environment.getExternalStorageDirectory()+"/file/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);

            }
        });
    }

5.xUtils3 联网模块

/**
     * 显示圆形头像,第三个参数为true
     *
     * @param imageView  图像控件
     * @param iconUrl    图片地址
     * @param isCircluar 是否显示圆形
     */
    public static void display(ImageView imageView, String iconUrl, boolean isCircluar) {
        ImageOptions imageOptions = new ImageOptions.Builder()
                .setImageScaleType(ImageView.ScaleType.CENTER_CROP)
                .setCircular(isCircluar)//设置成圆形显示
                .setCrop(true)//是否对图片进行裁剪
                .setLoadingDrawableId(R.mipmap.ic_launcher)
                .setFailureDrawableId(R.mipmap.ic_launcher)
                .build();
        x.image().bind(imageView, iconUrl, imageOptions);
    }

通过下面代码调用:

 String url="http://images.cnfol.com//file//201603//mp35337118_1444701483338_2_201603250855265951.gif";
 XUtilsImageUtils.display(show_iv,url,true);

效果图:
这里写图片描述
若要显示gif图片,可以设置

.setIgnoreGif(false)//true:不能显示gif,只能显示静态图  false:能显示gif

效果图:
这里写图片描述
注意:设置成圆形显示和设置显示gif图片不能同时生效。

猜你喜欢

转载自blog.csdn.net/dangnianmingyue_gg/article/details/60616945
今日推荐