Android框架之XUtils框架

来源:互联网 发布:梁朝伟唱功 知乎 编辑:程序博客网 时间:2024/06/05 21:12

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中初始化@Overridepublic 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() {            }        });    }}





1 0
原创粉丝点击