XUtils网络请求,图片加载(适合新手)。

XUtils是最近比较好的开源框架,功能强大,我在使用了几个月之后总结了一些使用方法,希望对大家有帮助。

一.网络请求
1. get请求的方法:

    public static <T> Callback.Cancelable Get(String url,Map<String,Object> map,Callback.CommonCallback<T> callback){
                   RequestParams params=new RequestParams(url);
                    if(null!=map){
                              for(Map.Entry<String, Object> entry : map.entrySet()){
                             params.addQueryStringParameter(entry.getKey(), (String)entry.getValue());
                           }
                  }
              }
             Callback.Cancelable cancelable = x.http().get(params, callback);
              return cancelable;
         }
 这里我们会自动将传入的map拼接成完整的URL 
XUtilsHttp.Get(URLString, map, new XutilsCallBack<String>() {
                 @Override
                 public void onSuccess(String result) {
                        super.onSuccess(result);
                        //这里的String可以声明为其他的泛型,可以是File,Object等类型。
                        //在这里处理请求成功后逻辑
                  }
                  @Override
                  public void onError(Throwable ex, boolean isOnCallback) {
                    super.onError(ex, isOnCallback);
                    //在这里处理请求失败 (包括服务器错误,网络错误等)
                }
           });
  1. post请求的方法:
public static <T> Callback.Cancelable Post(String url,Map<String,Object> map,Callback.CommonCallback<T> callback){
        RequestParams params=new RequestParams(url);
        if(null!=map){
            for(Map.Entry<String, Object> entry : map.entrySet()){
                params.addParameter(entry.getKey(), entry.getValue());
            }
        }
        }
        Callback.Cancelable cancelable = x.http().post(params, callback);
        return cancelable;
    }

调用方法和上面一致。
3.上传文件的方法:

 public static <T> Callback.Cancelable UpLoadFile(String url,Map<String,Object> map,Callback.CommonCallback<T> callback){
        RequestParams params=new RequestParams(url);
        if(null!=map){
            for(Map.Entry<String, Object> entry : map.entrySet()){
                params.addParameter(entry.getKey(), entry.getValue());
            }
        }
        params.setMultipart(true);
        Callback.Cancelable cancelable = x.http().post(params, callback);
        return cancelable;
    }

调用方法和上面一致。

4.下载文件的方法:

 public static <T> Callback.Cancelable DownLoadFile(String url,String filepath,Callback.CommonCallback<T> callback){
        RequestParams params=new RequestParams(url);
        //设置断点续传
        params.setAutoResume(true);
        params.setSaveFilePath(filepath);
        Callback.Cancelable cancelable = x.http().get(params, callback);
        return cancelable;
    }

4.回调方法:

public class XutilsCallBack<ResultType>  implements Callback.CommonCallback<ResultType>{

        @Override
        public void onSuccess(ResultType result) {
            //可以根据公司的需求进行统一的请求成功的逻辑处理
        }

        @Override
        public void onError(Throwable ex, boolean isOnCallback) {
            //可以根据公司的需求进行统一的请求网络失败的逻辑处理
        }

        @Override
        public void onCancelled(CancelledException cex) {

        }

        @Override
        public void onFinished() {

        }

 二.图片加载
    XUtils可以加载网络图片,资源图片,本地图片。

 x.image().bind(imageView, imageURL, new ImageOptions.Builder()
                    .setFailureDrawableId(R.drawable.default_pic_loading)
                    .setSize(screenWidth,screenHeight*85/100)
                    .setCrop(true)
                    .build());                       
```
     imageOptions = new ImageOptions.Builder()
                // 加载中或错误图片的ScaleType
                .setPlaceholderScaleType(ImageView.ScaleType.CENTER_CROP)
                // 默认自动适应大小
                // .setSize(...)
                //.setRadius(DensityUtil.dip2px(5))
                .setIgnoreGif(false)
                // 如果使用本地文件url, 添加这个设置可以在本地文件更新后刷新立即生效.
                //.setUseMemCache(false)
                .setFailureDrawableId(R.mipmap.default_pic_loading)
                .setLoadingDrawableId(R.mipmap.default_pic_loading)
                .build();
  上面的方法写的很清楚 不过我个人觉得Glide好用些。

三.数据库
自己可以封装相关方法一键增删改查。

DbUtils db = DbUtils.create(this);
User user = new User(); //这里需要注意的是User对象必须有id属性,或者有通过@ID注解的属性
user.setEmail("wyouflf@qq.com");
user.setName("wyouflf");
db.save(user); // 使用saveBindingId保存实体时会为实体的id赋值

...
// 查找
Parent entity = db.findById(Parent.class, parent.getId());
List<Parent> list = db.findAll(Parent.class);//通过类型查找

Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","=","test"));

// IS NULL
Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","=", null));
// IS NOT NULL
Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","!=", null));

// WHERE id<54 AND (age>20 OR age<30) ORDER BY id LIMIT pageSize OFFSET pageOffset
List<Parent> list = db.findAll(Selector.from(Parent.class)
                                   .where("id" ,"<", 54)
                                   .and(WhereBuilder.b("age", ">", 20).or("age", " < ", 30))
                                   .orderBy("id")
                                   .limit(pageSize)
                                   .offset(pageSize * pageIndex));

// op为"in"时,最后一个参数必须是数组或Iterable的实现类(例如List等)
Parent test = db.findFirst(Selector.from(Parent.class).where("id", "in", new int[]{1, 2, 3}));
// op为"between"时,最后一个参数必须是数组或Iterable的实现类(例如List等)
Parent test = db.findFirst(Selector.from(Parent.class).where("id", "between", new String[]{"1", "5"}));

DbModel dbModel = db.findDbModelAll(Selector.from(Parent.class).select("name"));//select("name")只取出name列
List<DbModel> dbModels = db.findDbModelAll(Selector.from(Parent.class).groupBy("name").select("name", "count(name)"));
...

List<DbModel> dbModels = db.findDbModelAll(sql); // 自定义sql查询
db.execNonQuery(sql) // 执行自定义sql
...

总结:当然XUtils还有很多功能,这里就不一一列举,大家去可以Github上面搜索看看作者是怎么说的,小弟第一次写博客,希望大家多多包涵。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值