Android学习——xUtils框架

xUtils框架

xUtils框架介绍

  • xUtils包含了很多实用的android工具。
  • xUtils支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更多灵活的ORM,更多的事件注解支持且不受混淆影响…
  • xUitls最低兼容android 2.2(api等级8)

目前xUtils主要的四大模块:
DbUtils模块;ViewUtils模块;HttpUtils模块;BitmapUtils模块

下载地址:https://github.com/qxbl/xUtils
下载完之后,解压,导入jar包

DbUtils模块

  • 安卓中的ORM框架,一行代码就可以进行增删改查;
  • 支持事务,默认关闭;
  • 可通过注释自定义表名,列名,外键,唯一性约束,NOT NULL约束,CHECK约束等(需要混淆的时候请注解表名和列名);
  • 支持绑定外键,保存实体时外键关联实体自动保存或更新;
  • 自动加载外键关联实体,支持延时加载;
  • 支持链式表达查询,更直观的查询语义,参考下面的介绍或样品中的例子。

权限设置

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

创建对象

package com.example.xutils;

public class User {
    private int id;
    private String name;
    private String email;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public User(String email, String name) {
        this.email = email;
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public User() {
    }
    
    @Override
    public String toString() {
        return "User{" +
                "email='" + email + '\'' +
                ", id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

MainActivity.java

package com.example.xutils;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;

import com.lidroid.xutils.DbUtils;
import com.lidroid.xutils.db.sqlite.Selector;
import com.lidroid.xutils.db.sqlite.WhereBuilder;
import com.lidroid.xutils.exception.DbException;

import java.util.List;

public class MainActivity extends AppCompatActivity {
    DbUtils dbUtils;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        dbUtils= DbUtils.create(this,"mydb");
    }

    //添加
    public void saveClick(View v){
        User user=new User("csy@qq.com","csy");
        try {
            dbUtils.save(user);
            Toast.makeText(this, "save success", Toast.LENGTH_SHORT).show();
            Log.i("tag","save success");
        } catch (DbException e) {
            e.printStackTrace();
        }
    }

    //全查
    public void findAllClick(View v){
        try {
            List<User> list=dbUtils.findAll(User.class);
            for (User u:list)
            {
                Log.i("tag", String.valueOf(u));
            }
        } catch (DbException e) {
            e.printStackTrace();
        }
    }

    //条件查找
    public void selectByClick(View view)
    {
        try {
            User user = dbUtils.findFirst(Selector.from(User.class).where("name","=","csy"));
            Toast.makeText(this,user.toString(),Toast.LENGTH_LONG).show();
            Log.i("tag", String.valueOf(user));
        } catch (DbException e) {
            e.printStackTrace();
        }
    }

    //更新操作
    public void updateClick(View view)
    {
        User user=new User();
        user.setId(1);
        user.setEmail("chensy@qq.com");
        user.setName("chensy");
        try {
            dbUtils.update(user,"email","name");
            Toast.makeText(this,"更新成功",Toast.LENGTH_LONG).show();
            Log.i("tag","更新成功");
        } catch (DbException e) {
            e.printStackTrace();
        }
    }

    ///删除
    public void deleteClick(View view)
    {
        try {
            dbUtils.delete(User.class, WhereBuilder.b("id","=","1"));
            Toast.makeText(this,"删除成功",Toast.LENGTH_LONG).show();
            Log.i("tag","删除成功");
        } catch (DbException e) {
            e.printStackTrace();
        }
    }
}

在这里插入图片描述
添加数据效果
在这里插入图片描述
查询所有
在这里插入图片描述
单个查询
在这里插入图片描述
更新
在这里插入图片描述
删除
在这里插入图片描述

ViewUtils模块

  • 安卓中的IOC框架,完全注解方式就可以进行UI,资源和事件绑定;
  • 新的事件绑定方式,使用混淆工具混淆后仍可正常工作;
  • 目前支持常用的20种事件绑定,参见ViewCommonEventListener类和包com.lidroid.xutils.view.annotation.event。
	DbUtils dbUtils;

    @ViewInject(R.id.textView_data)//相当于findById
    private TextView textView_data;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        dbUtils= DbUtils.create(this,"mydb");
        //注入view和事件
        ViewUtils.inject(this);
    }
@OnClick(R.id.button_show)
    public void show(View view){
        textView_data.setText("viewUtils的使用");
    }

在这里插入图片描述在这里插入图片描述

HttpUtils模块

  • 支持同步,异步方式的请求;
  • 支持大文件上传,上传大文件不会OOM;
  • 支持GET,POST,PUT,移动,复制,删除,HEAD,OPTIONS,TRACE,CONNECT请求;
  • 下载支持301/302重定向,支持设置是否根据内容处置重命名下载的文件;
  • 返回文本内容的请求(默认只启用了GET请求)支持缓存,可设置默认过期时间和针对当前请求的过期时间。

普通get方法

package com.example.xutils;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.ViewUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.RequestParams;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest;
import com.lidroid.xutils.view.annotation.ViewInject;
import com.lidroid.xutils.view.annotation.event.OnClick;

public class Main2Activity extends AppCompatActivity {
    @ViewInject(R.id.info)
    TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        ViewUtils.inject(this);
    }

    @OnClick(R.id.button_login)
    public void login(View view){
        httpUtils.send(HttpRequest.HttpMethod.GET, "http://www.lidroid.com", new RequestCallBack<String>() {
            @Override
            public void onSuccess(ResponseInfo<String> responseInfo) {
                textView.setText(responseInfo.result);
            }

            @Override
            public void onFailure(HttpException e, String s) {

            }
        });
    }
}

在这里插入图片描述
登录实例

package com.example.xutils;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.ViewUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.RequestParams;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest;
import com.lidroid.xutils.view.annotation.ViewInject;
import com.lidroid.xutils.view.annotation.event.OnClick;

public class Main2Activity extends AppCompatActivity {
    @ViewInject(R.id.editText_username)
    EditText editText_username;
    @ViewInject(R.id.editText_password)
    EditText editText_password;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        ViewUtils.inject(this);
    }

    @OnClick(R.id.button_login)
    public void login(View view){
        String username=editText_username.getText().toString();
        String password=editText_password.getText().toString();
        HttpUtils httpUtils=new HttpUtils();
        String url="";
        RequestParams params=new RequestParams();
        params.addQueryStringParameter("username",username);  //服务器那边对应的参数名称
        params.addBodyParameter("password",password); //服务器那边对应的参数名称
        httpUtils.send(HttpRequest.HttpMethod.POST, url, params, new RequestCallBack<String>() {
            @Override
            public void onSuccess(ResponseInfo<String> responseInfo) {
                String result=responseInfo.result;
                if ("1".equals(result)){
                    Toast.makeText(Main2Activity.this, "登录成功", Toast.LENGTH_SHORT).show();
                    Log.i("tag",result);
                }else {
                    Toast.makeText(Main2Activity.this, "登录失败", Toast.LENGTH_SHORT).show();
                    Log.i("tag",result);
                }
            }

            @Override
            public void onFailure(HttpException e, String s) {
                Toast.makeText(Main2Activity.this, s, Toast.LENGTH_SHORT).show();
                Log.i("tag",s);
            }
        });
    }
}

因为需要有一个服务器,所以登录实例没有具体效果图
在这里插入图片描述
注意:
使用HttpUtils时出现了“无法访问HttpRequestBase 找不到org.apache.http.client.methods.HttpRequestBase的类文件”这个错误,原因是
android 6.0(api 23) SDK,Android的网络请求强制使用HttpUrlConnection,并且SDK中也已经移除了HttpClient。
解决办法:
在build.gradle中添加

android {
useLibrary'org.apache.http.legacy'
}

BitmapUtils模块

  • 加载位图的时候无需考虑位图加载过程中出现的OOM和Android的容器快速滑动时候出现的图片错位等现象;
  • 支持加载网络图片和本地图片;
  • 内存管理使用LRU算法,更好的管理位图内存;
  • 可配置线程加载线程数量,缓存大小,缓存路径,加载显示动画等…
xUtils简介 xUtils 包含了很多实用的android工具 xUtils 最初源于Afinal框架 进行了大量重构 使得xUtils支持大文件上传 更全面的http请求协议支持 10种谓词 拥有更加灵活的ORM 更多的事件注解支持且不受混淆影响 xUitls最低兼容android 2 2 api level 8 目前xUtils主要有四大模块: DbUtils模块: android中的orm框架 一行代码就可以进行增删改查; 支持事务 默认关闭; 可通过注解自定义表名 列名 外键 唯一性约束 NOT NULL约束 CHECK约束等(需要混淆的时候请注解表名和列名); 支持绑定外键 保存实体时外键关联实体自动保存或更新; 自动加载外键关联实体 支持延时加载; 支持链式表达查询 更直观的查询语义 参考下面的介绍或sample中的例子 ViewUtils模块: android中的ioc框架 完全注解方式就可以进行UI 资源和事件绑定; 新的事件绑定方式 使用混淆工具混淆后仍可正常工作; 目前支持常用的20种事件绑定 参见ViewCommonEventListener类和包com lidroid xutils view annotation event HttpUtils模块: 支持同步 异步方式的请求; 支持大文件上传 上传大文件不会oom; 支持GET POST PUT MOVE COPY DELETE HEAD OPTIONS TRACE CONNECT请求; 下载支持301 302重定向 支持设置是否根据Content Disposition重命名下载的文件; 返回文本内容的请求 默认只启用了GET请求 支持缓存 可设置默认过期时间和针对当前请求的过期时间 BitmapUtils模块: 加载bitmap的时候无需考虑bitmap加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象; 支持加载网络图片和本地图片; 内存管理使用lru算法 更好的管理bitmap内存; 可配置线程加载线程数量 缓存大小 缓存路径 加载显示动画等 ">xUtils简介 xUtils 包含了很多实用的android工具 xUtils 最初源于Afinal框架 进行了大量重构 使得xUtils支持大文件上传 更全面的http请求协议支持 10种谓词 拥有更加灵活的ORM 更多的事件注解支持且不受混淆影响 xUitls最低兼 [更多]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值