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() {
}
});
数据库模块的使用
未完待续。。
如果有什么扩展的需求或者我有什么遗失和错误欢迎评论,我会第一时间回复和更新。