当前位置: 移动技术网 > IT编程>移动开发>Android > Android Saripaar 注解详解

Android Saripaar 注解详解

2019年12月03日  | 移动技术网IT编程  | 我要评论

诛仙有声小说下载,北京安卓培训,qq懒娃

写这篇文章的原因

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

于是,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

作用范围

  • checkbox
  • radiobutton
  • radiogroup

参数

  • sequence:确定规则的判定顺序,当单个view有多个规则时生效
  • messageresid:错误提示文字的资源文件id
  • message:错误提示文字
    注:所有注解均有这三个参数,故之后注解省略不写

@asserttrue

描述

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

作用范围

  • checkbox
  • radiobutton
  • radiogroup

@checked

描述

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

作用范围

  • checkbox
  • radiobutton
  • radiogroup

参数

  • value:用于设置预设值,默认为true

@confirmemail

描述

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

作用范围

  • textview

@confirmpassword

描述

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

作用范围

  • textview

@creditcard

描述

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

作用范围

  • textview

参数

  • cardtypes:是一个数组,用于确定信用卡的类型,每种类型对应着不同的正则表达式
    • type.amex,美国运通卡,对应着^(3[47]\d{13})$
    • type.diners,大莱信用卡,对应着^(30[0-5]\d{11}|3095\d{10}|36\d{12}|3[8-9]\d{12})$
    • type.discover,发现卡,对应着^(6011\d{12})$^(64[4-9]\d{13})$^(65\d{14})$
    • type.mastercard,万事达卡,对应着^(5[1-5]\d{14})$
    • type.visa,签证卡,对应着^(4)(\d{12}|\d{15})$
    • type.none,不允许任何内置的信用卡,适用于自定义信用卡类型

@decimalmax

描述

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

作用范围

  • textview

参数

  • valuedouble类型,最大值。

@decimalmin

描述

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

作用范围

  • textview

参数

  • valuedouble类型,最小值。

@digits

描述

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

作用范围

  • textview

参数

  • integer:整数部分最大位数
  • fraction:小数部分最大位数
    注:输入内容需满足正则
    string.format("(\\d{0,%d})(\\.\\d{1,%d})?", integer, fraction);

@domain

描述

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

作用范围

  • textview

参数

  • allowlocal:本地地址是否有效,默认为false

@email

描述

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

作用范围

  • textview

参数

  • allowlocal:本地地址是否有效,默认为false

@future

描述

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

作用范围

  • textview

参数

  • dateformat:时间的格式,默认为dd-mm-yyyy,以下为saripaar提供的格式(可自定义)
    • dateformats.dmydd-mm-yyyy
    • dateformats.ymdyyyy-mm-dd
    • dateformats.mdymm-dd-yyyy
    • dateformats.dmy_time_12_hoursdd-mm-yyyy hh:mm aa
    • dateformats.ymd_time_12_hoursyyyy-mm-dd hh:mm aa
    • dateformats.mdy_time_12_hoursmm-dd-yyyy hh:mm aa
    • dateformats.dmy_time_24_hoursdd-mm-yyyy kk:mm
    • dateformats.ymd_time_24_hoursyyyy-mm-dd kk:mm
    • dateformats.mdy_time_24_hoursmm-dd-yyyy kk:mm
  • dateformatresid:时间格式的资源id

@ipaddress

描述

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

作用范围

  • textview

@isbn

描述

判断输入的内容是否是一个isbn,即。

作用范围

  • textview

@length

描述

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

作用范围

  • textview

参数

  • min:文本的最小长度,默认为integer.min_value
  • max:文本的最大长度,默认为integer.max_value
  • trim:是否需要先做trim操作,默认为false

@max

描述

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

作用范围

  • textview

参数

  • valueint类型,最大值。

@min

描述

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

作用范围

  • textview

参数

  • valueint类型,最小值。

@notempty

描述

判断输入内容是否非空。

作用范围

  • textview

参数

  • trim:判断之前是否要先trim,默认为false
  • emptytext:设置“空字符串”,可自定义一段文本,当输入此文本是则为空
  • emptytextresid:设置“空字符串”的资源文件

@order

描述

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

作用范围

  • textview
  • checkbox
  • radiobutton
  • radiogroup
  • spinner

参数

  • valueint类型,用于确定顺序

@password

描述

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

作用范围

  • textview

参数

  • min:最小字符数,默认为6
  • schemescheme类型,利用正则确定密码的输入格式,只能为scheme类型,不可自定义,默认为password.scheme.any
    • password.scheme.any.+
    • password.scheme.alpha\w+
    • password.scheme.alpha_mixed_case(?=.*[a-z])(?=.*[a-z]).+
    • password.scheme.numeric\d+
    • password.scheme.alpha_numeric(?=.*[a-za-z])(?=.*[\d]).+
    • password.scheme.alpha_numeric_mixed_case(?=.*[a-z])(?=.*[a-z])(?=.*[\d]).+
    • password.scheme.alpha_numeric_symbols(?=.*[a-za-z])(?=.*[\d])(?=.*([^\w])).+
    • password.scheme.alpha_numeric_mixed_case_symbols(?=.*[a-z])(?=.*[a-z])(?=.*[\d])(?=.*([^\w])).+

@past

描述

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

作用范围

  • textview

参数

  • dateformat:时间的格式,默认为dd-mm-yyyy,以下为saripaar提供的格式(可自定义)
    • dateformats.dmydd-mm-yyyy
    • dateformats.ymdyyyy-mm-dd
    • dateformats.mdymm-dd-yyyy
    • dateformats.dmy_time_12_hoursdd-mm-yyyy hh:mm aa
    • dateformats.ymd_time_12_hoursyyyy-mm-dd hh:mm aa
    • dateformats.mdy_time_12_hoursmm-dd-yyyy hh:mm aa
    • dateformats.dmy_time_24_hoursdd-mm-yyyy kk:mm
    • dateformats.ymd_time_24_hoursyyyy-mm-dd kk:mm
    • dateformats.mdy_time_24_hoursmm-dd-yyyy kk:mm
  • dateformatresid:时间格式的资源id

@pattern

描述

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

作用范围

  • textview

参数

  • regex:正则表达式
  • casesensitive:是否区分大小写

@select

描述

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

作用范围

  • spinner

参数

  • defaultselection:设置默认值

@url

描述

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

作用范围

  • textview

参数

  • schemes:是一个数组,url的协议数组,可自定义,默认为{"http", "https", "ftp"}
  • allowfragmentsurl片段是否允许通过,默认为true

对于@optional@or

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

总结

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

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

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网