如何在Eclipse和Android Studio中使用xUtils3(一)**
1.xUtils3的源码库下载地址
2.xUtils3简介
- xUtils 包含了很多实用的android工具.
- xUtils 支持超大文件(超过2G)上传,更全面的http请求协议支持(11种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响…
- xUtils 最低兼容Android 4.0 (api level 14). (Android 2.3?)
xUtils3变化较多所以建立了新的项目不在旧版(github.com/wyouflf/xUtils)上继续维护, 相对于旧版本:
- HTTP实现替换HttpClient为UrlConnection, 自动解析回调泛型, 更安全的断点续传策略.
- 支持标准的Cookie策略, 区分domain, path…
- 事件注解去除不常用的功能, 提高性能.
- 数据库api简化提高性能, 达到和greenDao一致的性能
- 图片绑定支持gif(受系统兼容性影响, 部分gif文件只能静态显示), webp; 支持圆角, 圆形, 方形等裁剪, 支持自动旋转…
3.如何在Android studio中使用xUtils3
由于GitHub中的项目是使用Android studio开发的,所以在Android studio使用xUtils3十分简单
使用Gradle构建时添加一下依赖即可:
compile 'org.xutils:xutils:3.3.36'
4.如何在Eclipse中使用xUtils3
- 点击这里下载aar文件;
- 将arr文件的后缀名改为.zip;
- 解压zip,在解压后的文件中得到classes.jar,建议更名为xUtils.jar,不更改也没有关系; 在jni中得到.so文件
- 将xUtils和.so文件拷贝到项目中libs文件夹中,就可以使用xUtils3了
5.使用前配置
- 权限配置
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
2.初始化xUtils
建议在application或是在BaseActivity中初始化
//在Application中初始化
public void onCreate() {
super.onCreate();
x.Ext.init(this);
x.Ext.setDebug(BuildConfig.DEBUG); // 是否输出debug日志, 开启debug会影响性能.
}
//在BaseActivity中初始化xUtils
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
x.Ext.init(getApplication());
x.Ext.setDebug(BuildConfig.DEBUG);
x.view().inject(this);
}
3.使用注解
- Activity中控件注解
-activity注解
@ContentView(R.layout.activity_image_view)
public class ImageViewActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
-注解控件
@ViewInject(R.id.imageView)
ImageView imageView;
-事件注解
单个事件注解
//downImageBt的点击事件
@Event(value = R.id.downImageBt,type = View.OnClickListener.class/*可选参数, 默认是View.OnClickListener.class*/)
private void downImage(View view) {
-------
}
多个事件注解
@Event(value={R.id.enterImage,R.id.getDataByGet,R.id.getDataByPost} )
private void onClick(View view){
switch (view.getId()) {
case R.id.enterImage:
startActivity(new Intent(MainActivity.this, ImageViewActivity.class));
break;
case R.id.getDataByGet:
getDataByGet("");
break;
case R.id.getDataByPost:
getDataByPost("");
break;
default:
break;
}
}
在Fragment中注解Fragment
public class BaseFragment extends Fragment {
private boolean injected = false;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
// TODO Auto-generated method stub
return x.view().inject(this,inflater,container);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
if (!injected) {
x.view().inject(this,this.getView());
}
}
}
@ContentView(R.layout.fragment_image)
public class ImageFragment extends BaseFragment {
@ViewInject(R.id.lv_img)
private ListView imageListView;