Xutils3基本使用方法1

来源:互联网 发布:低周波按摩仪 知乎 编辑:程序博客网 时间:2024/06/07 21:01

今天来谈谈Xutils3()

调试环境: android studio

在谈Xutils3之前我们先来看看Xutils3

1:功能非常丰富,包含了很多实用的工具

2:Xutils3相对于xutils2对Android 6.0兼容更好了

3:支持超大文件上传(超过2G)上传,更全面的http请求协议支持(11种谓词)...

4:国内用户多,网上教程丰富


一:在我们的项目中快速配置Xutils 3

Xutils3 在android studio 中配置非常简单:

第一步 添加框架:

右击你的项目--选择Open Module Settings --选择Dependencies--选择右上角的“+”号--选择Library dependency--在Choose Library Dependencies对话框里即可下查找下载框架了。

第二步 添加网络权限:

<uses-permission android:name="android.permission.INTERNET" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
第三步在Application里初始化

package com.xutils.xutils3;import android.app.Application;import org.xutils.x;/** * application *  * Created by Administrator on 2017/5/16. */public class MyApplication extends Application {    @Override    public void onCreate() {        super.onCreate();        x.Ext.init(this);//初始化        x.Ext.setDebug(BuildConfig.DEBUG);//是否输出debug日志, 开启debug会影响性能    }}


补充:Application使用方法(在androidManifest 里添加 android:name=".MyApplication")


    <application        android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:roundIcon="@mipmap/ic_launcher_round"        android:supportsRtl="true"        android:name=".MyApplication"        android:theme="@style/AppTheme">        <activity android:name=".MainAty">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application>

二:XUtils3 四大核心模块

XUtils3 一共有四大核心模块它们分别是:

注解模块

网络模块

图片加载模块

数据库模块

下面我们结合Demo依次介绍它们

1:注解模块

我用的注解有以下两种,想了解更多参考官方Demo

@ViewInject(控件初始化)、@Event(按钮设置点击事件)

public class MainAty extends AppCompatActivity {    @ViewInject(R.id.bn_picture)//图片 控件初始化    private Button bn_picture;    @Event(value ={R.id.bn_picture,R.id.bn_file})//设置点击事件    private void onClick(View view){        switch (view.getId()){            case R.id.bn_picture:                Toast.makeText(this,"图片",Toast.LENGTH_SHORT).show();                break;            case R.id.bn_file:                Toast.makeText(this,"下载文件",Toast.LENGTH_SHORT).show();                break;            default:                break;        }    }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.aty_main);        x.view().inject(this);//初始化xutils3    }}


2:网络模块

    我将从以下几方面介绍XUtils3的网络模块

GET请求

    /**     * 请求网络     */    private void initHttp(){        String url="https://hao.qq.com/";        ProgressDialog progressDialog=new ProgressDialog(this);        progressDialog.setMessage("请稍后");        RequestParams params=new RequestParams(url);        params.addQueryStringParameter("username","123456");        params.addQueryStringParameter("password","werfd");        x.http().get(params, new Callback.CommonCallback<String>() {                    @Override                    public void onSuccess(String result) {                        Log.e("Xutils3请求:","请求成功的"+result);                    }                    @Override                    public void onError(Throwable ex, boolean isOnCallback) {                        Log.e("Xutils3请求:","请求失败的"+ex);                    }                    @Override                    public void onCancelled(CancelledException cex) {                        Log.e("Xutils3请求:","取消的"+cex);                    }                    @Override                    public void onFinished() {                        Log.e("Xutils3请求:","完成的");                    }                });    }

带有缓存的GET请求


    /**     * 请求网络     */    private void initHttp() {        String url = "https://hao.qq.com/";        ProgressDialog progressDialog = new ProgressDialog(this);        progressDialog.setMessage("请稍后");        RequestParams params = new RequestParams(url);        params.addQueryStringParameter("username", "123456");        params.addQueryStringParameter("password", "werfd");        params.addHeader("head", "txderef"); //为当前请求添加一个头        x.http().get(params, new Callback.CacheCallback<String>() {            @Override            public boolean onCache(String result) {                //在setCacheMaxAge设置范围(上面设置的是60秒)内,如果再次调用GET请求,                //返回true:缓存内容被返回,相信本地缓存,返回false:缓存内容被返回,不相信本地缓存,仍然会请求网络                Log.i("cache",result);                return false;            }            @Override            public void onSuccess(String result) {                Log.e("Xutils3请求:", "请求成功的" + result);            }            @Override            public void onError(Throwable ex, boolean isOnCallback) {                Log.e("Xutils3请求:", "请求失败的" + ex);            }            @Override            public void onCancelled(CancelledException cex) {                Log.e("Xutils3请求:", "取消的" + cex);            }            @Override            public void onFinished() {                Log.e("Xutils3请求:", "完成的");            }            //result:缓存内容        });    }




POST请求

    /**     * 请求网络     */    private void initHttp(){        String url="https://hao.qq.com/";        ProgressDialog progressDialog=new ProgressDialog(this);        progressDialog.setMessage("请稍后");        RequestParams params=new RequestParams(url);        params.addQueryStringParameter("username","123456");        params.addQueryStringParameter("password","werfd");        params.addHeader("head","txderef"); //为当前请求添加一个头        x.http().post(params, new Callback.CommonCallback<String>() {                    @Override                    public void onSuccess(String result) {                        Log.e("Xutils3请求:","请求成功的"+result);                    }                    @Override                    public void onError(Throwable ex, boolean isOnCallback) {                        Log.e("Xutils3请求:","请求失败的"+ex);                    }                    @Override                    public void onCancelled(CancelledException cex) {                        Log.e("Xutils3请求:","取消的"+cex);                    }                    @Override                    public void onFinished() {                        Log.e("Xutils3请求:","完成的");                    }                });    }

其他网络请求方式

    /**     * 请求网络     */    private void initHttp() {        String url = "https://hao.qq.com/";        ProgressDialog progressDialog = new ProgressDialog(this);        progressDialog.setMessage("请稍后");        RequestParams params = new RequestParams(url);        params.addParameter("username", "123456");        params.addParameter("password", "werfd");        x.http().request(HttpMethod.PUT, params, new Callback.CommonCallback<String>() {            @Override            public void onSuccess(String result) {                Log.e("Xutils3请求:", "请求成功的" + result);            }            @Override            public void onError(Throwable ex, boolean isOnCallback) {                Log.e("Xutils3请求:", "请求失败的" + ex);            }            @Override            public void onCancelled(CancelledException cex) {                Log.e("Xutils3请求:", "取消的" + cex);            }            @Override            public void onFinished() {                Log.e("Xutils3请求:", "完成的");            }            //result:缓存内容        });    }








原创粉丝点击