Android Saripaar 注解详解

写这篇文章的原因

在移动端一般很少使用复杂的表单,一般针对于属性的更改都会打开一个新的页面进行更改。虽然不多,但是也会有。如果一个页面要输入的内容包括姓名、地址、邮箱、手机号等,对各个属性的验证会非常麻烦,并且非常的不优雅。

于是,saripaar就出现了,一种基于规则的Android UI输入验证库,通过注解即可标注验证规则。

使用过程中发现只有四个字:简单好用。但是官方对注解的使用并没有一份完整的文档,故参考源码整理了现有的所有注解(基于版本2.0.3)。

如何使用

导入依赖

第一步当然是导入依赖啦,可通过implementation 'com.mobsandgeeks:android-saripaar:(latest version)'导入saripaar,将(latest version)替换为最新版本即可。

使用注解

对需要进行验证的可输入View加上注解来标注验证规则,例

@Length(min = 6, max = 9)
private AppCompatEditText et1;

该注解表示et1中的输入内容长度只能在6到9的闭区间。

实例化Validator

mValidator = new Validator(this);
mValidator.setValidationListener(this);

Validator负责验证给定容器中的View,通常容器为ActivityFragment。但也可以用包含View的其他类作为容器。

实现ValidationListener

public class MainActivity extends AppCompatActivity implements Validator.ValidationListener {

    // Code…

    @Override
    public void onValidationSucceeded() {
        Toast.makeText(this, "成功了!", Toast.LENGTH_LONG).show();
    }

    @Override
    public void onValidationFailed(List<ValidationError> errors) {
        Toast.makeText(this, "失败了!", Toast.LENGTH_LONG).show();
    }
}

ValidationListener用户监听回调结果,并进行相应的处理。

调用验证方法

btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        mValidator.validate();
    }
});

其余的高级用法在此不做介绍,该文章主要介绍各个注解的使用。

注解

@AssertFalse

描述

用于判断输入内容是否为false

作用范围

参数


@AssertTrue

描述

用于判断输入内容是否为true

作用范围


@Checked

描述

用于判断输入内容是否为预设值,默认预设值为true

作用范围

参数


@ConfirmEmail

描述

判断当前输入内容与被@Email注解的View的内容是否一致。
注:当前容器所持有的被@Email注解的View必须且只允许有一个。

作用范围


@ConfirmPassword

描述

判断当前输入内容与被@Password注解的View的内容是否一致。
注:当前容器所持有的被@Password注解的View必须且只允许有一个。

作用范围


@CreditCard

描述

判断输入内容是否符合信用卡卡号规则。

作用范围

参数


@DecimalMax

描述

限制输入内容的最大值,输入内容会被强转为Double类型,若输入文字不符合Double类型,会报ConversionException异常。

作用范围

参数


@DecimalMin

描述

限制输入内容的最小值,输入内容会被强转为Double类型,若输入文字不符合Double类型,会报ConversionException异常。

作用范围

参数


@Digits

描述

判断输入内容是否为数字,可定义整数部分以及小数部分的最大位数。

作用范围

参数


@Domain

描述

判断输入内容是否是一个有效的域名。

作用范围

参数


@Email

描述

判断输入内容是否是一个有效的邮箱地址。

作用范围

参数


@Future

描述

判断输入的时间是否是未来时间(与当前时间相比)。输入的时间必须满足相应的格式。

作用范围

参数


@IpAddress

描述

判断输入的内容是否是一个IPIPv4IPv6

作用范围


@Isbn

描述

判断输入的内容是否是一个Isbn,即国际标准书号

作用范围


@Length

描述

限制输入内容的文本长度,可自定义最大长度和最小长度。

作用范围

参数


@Max

描述

限制输入内容的最大值,输入内容会被强转为Integer类型,若输入文字不符合Integer类型,会报ConversionException异常。

作用范围

参数


@Min

描述

限制输入内容的最小值,输入内容会被强转为Integer类型,若输入文字不符合Integer类型,会报ConversionException异常。

作用范围

参数


@NotEmpty

描述

判断输入内容是否非空。

作用范围

参数


@Order

描述

确定校验字段的顺序。当一个容器有多个View需要检验时,可通过该注解确定校验顺序。

作用范围

参数


@Password

描述

用于校验文本是否符合密码的规则。

作用范围

参数


@Past

描述

判断输入的时间是否是过去时间(与当前时间相比)。输入的时间必须满足相应的格式。

作用范围

参数


@Pattern

描述

判断输入的内容是否满足正则表达式。

作用范围

参数


@Select

描述

判断选择的索引是否等于默认值,如果不等于则通过,默认值为0。

作用范围

参数


@Url

描述

判断输入的内容是否是一个url

作用范围

参数


对于@Optional@Or

虽然该版本已经有了这两个注解,但是并不能使用,参考作者在stackoverflow上的回复,注解将会在2.1.0版本上线

总结

本篇文章简单介绍了Android Saripaar的用法,并着重列举了各个注解的作用以及各个参数的意思,方便以后的查询。

通过阅读源码对saripaar有了更深的认识,并对基于注解的框架有了一个完备的认知。

以后如果有时间的话总结一下Android Saripaar实现的细节。

Android Saripaar 注解详解

全文结束