Xutils3基本使用方法1

本文介绍了XUtils3的安装配置及四大核心模块:注解、网络、图片加载和数据库。重点讲解了网络模块的GET、POST请求及缓存机制。

今天来谈谈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:缓存内容

        });

    }








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值