xUtils3 的基本使用

Activity的注解

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

x.Ext.init(this);

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

x.view().inject(this);

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

@ContentView加入到Activity的上方
例:
    @ContentView(R.layout.activity_main)
public class MainActivity extends AppCompatActivity {
    x.view().inject(this);
    //...自己的逻辑
}

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

@InjectView
//其实就是正常的 findViewById();方法而已
例:
    //xx就是你的控件ID
    @InjectView(R.id.XX)
    TextView tv;

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

@Envent
//添加事件的方法
例:
    //绑定单击事件 单击事件 默认的就是 所以不用指定类型
    @Envent(R.id.main_btn)
    //回调方法 方法触发后执行的方法 修饰符只能用 private
    private void XX(View view){
        //...写你自己的逻辑
    }

网络模块

Get请求方式:

 //测试网址
 String url = "http://www.93.gov.cn/93app/data.do";
    //定义请求参数对象
        RequestParams r = new RequestParams(url);
        //添加请求参数 Key Value 的形式
        r.addQueryStringParameter("channelId", "0");
        r.addQueryStringParameter("startNum", "0");
        //发送请求 (get)方式
        x.http().get(r, new Callback.CommonCallback<String>() {
            @Override
            public void onSuccess(String result) {
                t.setText(result);
            }
            @Override
            public void onError(Throwable ex, boolean isOnCallback) {
                Toast.makeText(MainActivity.this, "出错了", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onCancelled(CancelledException cex) {
                Toast.makeText(MainActivity.this, "取消了", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onFinished() {
                Toast.makeText(MainActivity.this, "完成了", Toast.LENGTH_SHORT).show();
            }
        });

下面我们来看下带有缓存的GET请求,POST请求和其他请求方式类似,后面就不再赘述:

String url = "http://www.93.gov.cn/93app/data.do";
    //定义请求参数对象
        RequestParams r = new RequestParams(url);
        //添加请求参数 Key Value 的形式
        r.addQueryStringParameter("channelId", "0");
        r.addQueryStringParameter("startNum", "0");
        x.http().get(params, new Callback.CacheCallback<String>() {
             @Override
            public boolean onCache(String result) { //得到缓存数据, 缓存过期后不会进入
                this.result = result;
                return true; //true: 信任缓存数据, 不再发起网络请求; false不信任缓存数据
            }
             @Override
            public void onSuccess(String result) {
            //如果服务返回304或onCache选择了信任缓存,这时result为null
                Log.i("JAVA", "开始请求");
                if (result != null) {
                    this.result = result;
                }
            }
            @Override
            public void onError(Throwable ex, boolean isOnCallback) {
                Toast.makeText(MainActivity.this, "出错了", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onCancelled(CancelledException cex) {
                Toast.makeText(MainActivity.this, "取消了", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onFinished() {
                Toast.makeText(MainActivity.this, "完成了", Toast.LENGTH_SHORT).show();
            }
        }

post请求方式:

RequestParams params = new RequestParams(url);
params.addBodyParameter("username","abc");
params.addParameter("password","123");
params.addHeader("head","android"); //为当前请求添加一个头
x.http().post(params, new Callback.CommonCallback<String>() {
    @Override
    public void onSuccess(String result) {
        //解析result
    }
    @Override
    public void onError(Throwable ex, boolean isOnCallback) {
    }
    @Override
    public void onCancelled(CancelledException cex) {
    }
    @Override
    public void onFinished() {
    }
});

其他网络请求方式:

RequestParams params = new RequestParams(url);
params.addParameter("username","abc");
x.http().request(HttpMethod.PUT, params, new Callback.CommonCallback<String>() {
    @Override
    public void onSuccess(String result) {
        //解析result
    }
    @Override
    public void onError(Throwable ex, boolean isOnCallback) {
    }
    @Override
    public void onCancelled(CancelledException cex) {
    }
    @Override
    public void onFinished() {
    }
});

上传文件:

//获取文件的路径 这里是 获取 手机SD卡中的 文件
File file = new File(Environment.getExternalStorageDirectory(),"/Music/fjxc.mp3");
RequestParams params = new RequestParams(url);
//将文件当作参数 上传
params.addBodyParameter("file", file);
params.setMultipart(true);
x.http().post(params, new Callback.CommonCallback<String>() {
      @Override
      public void onSuccess(String result) {
          Toast.makeText(MainActivity.this, "上传成功", Toast.LENGTH_SHORT).show();
      }
      @Override
      public void onError(Throwable ex, boolean isOnCallback) {
          Toast.makeText(MainActivity.this, "上传失败啦", Toast.LENGTH_SHORT).show();
      }

      @Override
      public void onCancelled(CancelledException cex) {
          Toast.makeText(MainActivity.this, "上传被取消啦", Toast.LENGTH_SHORT).show();
      }

      @Override
      public void onFinished() {
          Toast.makeText(MainActivity.this, "上传完成啦", Toast.LENGTH_SHORT).show();
      }
});

下载文件:

这里以下载apk为例进行说明,apk下载完成后,自动调用系统的安装方法。

 RequestParams params = new RequestParams(url);
        //下载文件的保存路径
        params.setSaveFilePath(Environment.getExternalStorageDirectory() + "/apk");
        //自动修改文件名字
        params.setAutoRename(true);

        x.http().get(params, new Callback.CommonCallback<File>() {
            @Override
            public void onSuccess(File result) {
                //下载成功之后进行安装apk
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setDataAndType(Uri.fromFile(result),"application/vnd.android.package-archive");
                startActivity(intent);
            }

            @Override
            public void onError(Throwable ex, boolean isOnCallback) {

            }

            @Override
            public void onCancelled(CancelledException cex) {

            }

            @Override
            public void onFinished() {

            }
        });

图片模块的使用

xUtils3图片模块,重点在于加载图片的4个bind方法,loadDrawable与loadFIle用法和ImageOptions用法,需多加练习。

ImageOptions

//通过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(20) //设置拐角弧度
.setUseMemCache(true) //设置使用MemCache,默认true

bind方法

// 加载资源文件(本地的文件)
x.image().bind(imageView, "assets://test.gif", imageOptions);

// 加载网络资源
x.image().bind(imageView, new File("/sdcard/test.gif").toURI().toString(), imageOptions);
x.image().bind(imageView, "/sdcard/test.gif", imageOptions);
x.image().bind(imageView, "file:///sdcard/test.gif", imageOptions);
x.image().bind(imageView, "file:/sdcard/test.gif", imageOptions);
//有回调方法的bind方法
x.image().bind(imageView, url, imageOptions, new Callback.CommonCallback<Drawable>() {
    @Override
    public void onSuccess(Drawable result) {
    }
    @Override
    public void onError(Throwable ex, boolean isOnCallback) {
    }
    @Override
    public void onCancelled(CancelledException cex) {
    }
    @Override
    public void onFinished() {
    }
}

loadDrawable方法

x.image().loadDrawable(url, imageOptions, new Callback.CommonCallback<Drawable>() {
    @Override
    public void onSuccess(Drawable result) {
        imageView.setImageDrawable(result);
    }
    @Override
    public void onError(Throwable ex, boolean isOnCallback) {
    }
    @Override
    public void onCancelled(CancelledException cex) {
    }
    @Override
    public void onFinished() {
    }
});

loadFile方法

当我们通过bind()或者loadDrawable()方法加载了一张图片后,它会保存到本地文件中,那当我需要这张图片时,就可以通过loadFile()方法进行查找。

x.image().loadFile(url,imageOptions,new Callback.CacheCallback<File>(){
    @Override
    public boolean onCache(File result) {
        //在这里可以做图片另存为等操作
        Log.i("JAVA","file:"+result.getPath()+result.getName());
        return true; //相信本地缓存返回true
    }
    @Override
    public void onSuccess(File result) {
    }
    @Override
    public void onError(Throwable ex, boolean isOnCallback) {
    }
    @Override
    public void onCancelled(CancelledException cex) {
    }
    @Override
    public void onFinished() {
    }
});

数据库模块的使用

未完待续。。

如果有什么扩展的需求或者我有什么遗失和错误欢迎评论,我会第一时间回复和更新。

猜你喜欢

转载自blog.csdn.net/qq_38001118/article/details/77727018