Xutils简介和基本使用

来源:互联网 发布:嘉兴软件开发制作 编辑:程序博客网 时间:2024/05/16 14:30
特性:支持超大文件(超过2G)上传更全面的http请求协议支持(11种谓词)拥有更加灵活的ORM, 和greenDao一致的性能更多的事件注解支持且不受混淆影响...图片绑定支持gif(受系统兼容性影响, 部分gif文件只能静态显示), webp; 支持圆角, 圆形, 方形等裁剪, 支持自动旋转...

四大模块:
xUtils3主要包含注解模块、网络模块、图片模块和数据库模块

依赖:

compile 'org.xutils:xutils:3.3.36'

权限:

<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />操作数据库最好加上读取内存权限

初始化

// 在application的onCreate中初始化@Overridepublic void onCreate() {    super.onCreate();    x.Ext.init(this);}//数据库初始化 public static DbManager getDb(){                                       DbManager.DaoConfig config = new DbManager.DaoConfig().setDbName("wyb.db").setDbDir(new File("/mnt/sdcard")).setDbVersion(1);        DbManager db = x.getDb(config);        return db;    }在AndroidManifest文件中注册MyApp<application    android:name=".MyApp"    ...</application> 

注解模块:
通过注解的方式加载布局和获取控件

//放在对应的Activity类上面加载布局文件   注意要将onCreate()中的setContentView(R.layout.activity_main);注释掉@ContentView(R.layout.activity_main)public class MainActivity extends AppCompatActivity {     //找控件    @ViewInject(R.id.tv_title)    TextView tv_title;//监听事件@Event(type =事件类型.class, value = 对应的控件R.id.**)}

网络模块:
注意:
1.可以通过接口回调设置缓存
2.关于query参数? http请求可以通过 header, url, body(请求体)传参; query参数是url中问号(?)后面的参数.
3.关于body参数? body参数只有PUT, POST, PATCH, DELETE(老版本RFC2616文档没有明确指出它是否支持, 所以暂时支持)请

RequestParams params = new RequestParams(url);//关于query参数params.addQueryStringParameter("", "");//关于body参数params.addBodyParameter("", "");//下载文件的保存路径params.setSaveFilePath(Sdpath+"文件名");//自动修改文件名字params.setAutoRename(true);//分段params.setMultipart(true);                    //new Callback.CacheCallback<object>缓存 会多重写一个方法public boolean onCache(String result) {}                   onCache()返回值 true代表支持缓存 如果缓存时间没有过期就不走网络请求,false不支持缓存x.http().get(params, new Callback.CommonCallback<object>() {            @Override            public void onSuccess(File result) {              }            @Override            public void onError(Throwable ex, boolean isOnCallback) {            }            @Override            public void onCancelled(CancelledException cex) {            }            @Override            public void onFinished() {            }        });

图片模块:

ImageOptions options = new ImageOptions.Builder();/**     * 加载图片     * //通过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(int raduis) //设置拐角弧度     * .setUseMemCache(true) //设置使用MemCache,默认true     */     根据需求自定义添加x.image().bind(控件, 地址, options设置图片加载属性);

数据库模块:
1.注意要看上面的初始化
可以根据需求封装一个JavaBean
用来将数据库表和对象关联

//这是一个简单的案例@Table(name = "Student", onCreated = "")public class Student {    /**     * name = "id",数据库表中的字段     * isId = true,是否是主键     * autoGen = true,是否自增     * property = "NOT NULL" 不为空     */    @Column(name = "id", isId = true, autoGen = true, property = "NOT NULL")    private int id;    //必须提供无参构造    ...    }    APP类定义数据库初始化的类DbMeass db = APP类.getDb();//返回值得到db对象//可以通过db调取增删改查的方法介绍一些简单方法 //添加 db.save(Student对象); //查询第一条 db.findFirst(Student.class); //修改  先查询一条在修改值 Student student2 = db.findById(Student.class, "2"); student2.setName("老王"); db.update(student2, "name"); //删除表 db.dropTable(Student.class); //删除库 db.dropDb(); //其他方法可以自己去体验
原创粉丝点击