Android框架有很多,但是比较实用的框架莫过于XUtils了,因此,想和大家一起研究研究XUtils框架 XUtils如今有两个版本,分别是XUtils,和XUtils3,那么我们先来讲XUtils
XUtils的优点:xUtils 包含了很多实用的android工具。xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响xUitls 最低兼容android 2.2 (api level 8)
XUtils的不足: 对Android 6.0兼容不是很好
XUtils3的优点: xUtils3支持超大文件(超过2G)上传,更全面的http请求协议支持(11种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响 xUtils3 最低兼容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; 支持圆角, 圆形, 方形等裁剪, 支持自动旋转
但是,在使用这个框架的时候,我们需要提前导入依赖包,在没有升级之前是需要我们自己去手动下载导入的,升级之后,我们可以直接在注入在项目的gradle文件里面,在使用Gradle构建时添加一下依赖即可:compile 'org.xutils:xutils:3.3.42'
升级之后,我们使用前还需要配置以及初始化:
使用前配置需要的权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
初始化
// 在application的onCreate中初始化
@Override
public void onCreate() {
super.onCreate();
x.Ext.init(this);
x.Ext.setDebug(BuildConfig.DEBUG); // 是否输出debug日志, 开启debug会影响性能.
...
}
现在,我们来写一个登录,测试一下,这个框架是否能用:
main.xml:(写两个编辑框输入用户名admin以及密码123,设置一个登录按钮)
<EditText
android:id="@+id/et_main_uname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="admin" />
<EditText
android:id="@+id/et_main_upass"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="123456" />
<Button
android:id="@+id/btn_main_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="登录" />
main.activity
public class MainActivity extends AppCompatActivity {
@ViewInject(R.id.et_main_uname)
private EditText et_main_uname;
@ViewInject(R.id.et_main_upass)
private EditText et_main_upass;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
x.view().inject(this);
}
@Event(value = R.id.btn_main_login,type = View.OnClickListener.class)
private void login(View view){
//获取文本框的值(用户名和密码)
String name=et_main_uname.getText().toString();
String pass=et_main_upass.getText().toString();
//发送请求
RequestParams params=new RequestParams("http://192.168.42.169:8080/G150725_S2SH/loginActionlogin.action");
params.addParameter("uname",name);
params.addParameter("upass",pass);
x.http().post(params, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String result) {
Toast.makeText(MainActivity.this, result, Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
}
@Override
public void onCancelled(CancelledException cex) {
}
@Override
public void onFinished() {
}
});
}
}