LoonAndroid框架,同时给我们提供了一套自动检测输入规则的工具,用起来很是方便,下面介绍一下这个东东的使用方法(注意,该说明是基于项目已经集成了LoonAndroid框架而言,如果您未集成该框架,请先按照相关说明集成该框架而后方能使用):

1、Validator 验证器类 
     ①实例化: Validator validator = new Validator(this);
     ②设置监听回调:validator.setValidationListener(...)
          其中监听接口为:ValidationListener,他有2个需要重写实现的方法:
                onValidationSucceeded()---当改验证器验证成功时回调
                onValidationFailed(View failedView, Rule<?> failedRule)---当该验证器验证失败时回调(失败情况为输入形式不满足当前验证器所指定的规则)
      ③启动验证器进行验证---一般写在 确定 按钮里    validator.validate();
2、验证规则
    我们了解了验证器类,下面介绍如何来制定我们自己的验证规则,比如,用户名输入框要求输入几位字符,要求字母+数字构成,密码输入框要求大于6位字符,注册时要求密码二次输入一致,等等这些规则,框架都为我们提供了统一的管理(统一使用注解进行验证规则设定)
    ①@Regex()
        正则表达式注解,其中参数有:message = "第一个错误了", pattern = "[a-zA-Z0-9_]{6,15}" ,trim = true , order = 1
            message为验证提示信息,pattern为正则表达式,trim为是否去除字符串俩头的空格,order为优先提示号,数值越小优先级越高
    ②@TextRule()
        文本规则,其中参数有:message = "密码长度4到16位" , minLength = 4, trim = true, maxLength = 16 , order = 2
    ③@Password()
        密码输入规则,其中参数有:message = "密码长度错误", minLength = 6, maxLength = 18 ,order = 1
    ④@ConfirmPassword()
        确认密码输入规则,其中参数有:message = "两次密码输入不一致", order = 2  
 注意③和④对应使用
3、验证错误提示说明
    我们有了验证规则和验证器,验证器使用我们自定义的验证规则去验证,当验证结果为成功的时候,我们就可以在成功的回调方法onValidationSucceeded()里面进行成功后的逻辑书写了,比如获取输入框的字符串进行登录,注册等
    而当我们验证失败后,该如何进行提示呢?比如输入的不符合我们制定的必须要有字母+数字组合的规则,输入的密码2次不一致等,我们该如何通知用户他当前输入的不符合哪条规则呢?下面我们介绍一下另一个回调方法:onValidationFailed(View view, Rule<?> rule);
    首先看看他的参数,View view,如果你有一定的功底,那么你可以去查看源码来熟悉,如果没有,那我可以给你讲解一下,其实改View就是当前用户输入不符合制定的规则的那个输入框,即出错的那个输入框,所有我们可以在验证失败的回调中进行如下判断:
        if (view instanceof EditText) { ...... }   确定当前错误回调是因为输入框内容不符合规则而产生的
    而第二个参数  Rule<?> rule,为一个抽象类,该类中有一个私有成员属性为:String mFailureMessage,且该属性在出错的时候底层进行了赋值,其值为当前出错注解上的message参数的值,所有从这也能了解到,之前注解上的message参数的作用了。而rule类提供了一个方法
            public String getFailureMessage() {
                    return mFailureMessage;
                }
    所以我们可以通过   rule.getFailureMessage() 对错误参数进行提取出来
 
4、完整使用流程:
    ①、定义控件时进行如下注解:
      
    ②实例化验证器,并设置监听(设置监听时的参数为this是因为当前类已经实现了监听接口)
      
    ③点击事件中进行开始验证
      
    ④验证成功,可进行相关逻辑操作
      
    ⑤验证失败
      
    在验证失败方法中可以进行简单的Toast提示,也可以如代码中设置Handler_TextStyle风格,然后对当前view调用setError()方法进行提示
 
6、最终效果如下图所示(具体美化请自行设置Handler_TextStyle风格)
      

LoonAndroid自动检测输入框 --- Author: rose && lvyerose@163.com的更多相关文章

  1. span表情输入框 --- Author: rose && lvyerose@163.com

        像QQ等社交聊天中,不可或缺的一部分就是我们常用的表情输入了,有时候有趣的表情同样能吸引住用户达到用户常驻的效果,当然,我们开发的时候不用去研究如何才能做到有趣,如何才能做到足够吸引用户,我们 ...

  2. Gulp实例(包括环境搭建的自动检测)

    # Gulp实例(包括环境搭建的自动检测) Gulp是一个自动化构建工具,开发者可以使用它在项目开发过程中自动执行常见任务.下面我将完成如下的功能点并且附上源码: CSS文件打包 less文件打包 s ...

  3. Delphi 自动检测U盘插入、拔出及获取U盘盘符!

    http://qqhack8.blog.163.com/blog/static/1141479852012102133475/     Delphi 自动检测U盘插入.拔出及获取U盘盘符! u盘的 插 ...

  4. 【译】Spring 4 自动装配、自动检测、组件扫描示例

    前言 译文链接:http://websystique.com/spring/spring-auto-detection-autowire-component-scanning-example-with ...

  5. iOS自动检测版本更新

    虽然苹果官方是不允许应用自动检测更新,提示用户下载,因为苹果会提示你有多少个软件需要更新,但是有的时候提示用户一下有新版还是很有必要的. 首先说一下原理: 每个上架的苹果应用程序,都会有一个应用程序的 ...

  6. Elasticsearch 动态映射——自动检测

    ES中有一个非常重要的特性——动态映射,即索引文档前不需要创建索引.类型等信息,在索引的同时会自动完成索引.类型.映射的创建. 那么什么是映射呢?映射就是描述字段的类型.如何进行分析.如何进行索引等内 ...

  7. paip.提高稳定性---自动检测sleep mysql数据库死连接以及kill

    paip.提高稳定性---自动检测sleep mysql数据库死连接以及kill 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:ht ...

  8. IOS开发中如何实现自动检测更新APP

    自动检测更新实现逻辑: 先上github地址:https://github.com/wolfhous/HSUpdateApp 1,获取当前项目APP版本号 2,拿到AppStore项目版本号 3,对比 ...

  9. spring实战五之Bean的自动检测

    在spring实战四中,使用在Spring中增加<context:annotation-config>的方式告诉Spring,我们打算使用基于注解的自动装配,希望Spring特殊对待我们所 ...

随机推荐

  1. 微信小程序 网络请求之设置合法域名

    设置域名 登录微信公众号后台小程序中 设置→开发设置→服务器设置 必须设置域名,微信小程序才能进行网络通讯,不然会报错 如果设置好了合法域名,开发工具还提示不在合法域名列表中,因为在微信会有一段时间的 ...

  2. jprofiler安装图解 ( 7_1 )

    环境: 1.sun jdk1.6.0 2.jprofiler_windows_6_0_2.exe 安装 1. jdk, 安装略... 2. jprofiler安装 一路next 到Enter lice ...

  3. 每天一个Linux命令(14)--head命令

    head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然的就是查看档案的结尾啦. 1.命令格式: h ...

  4. Redis Cluster部署、管理和测试

    背景: Redis 3.0之后支持了Cluster,大大增强了Redis水平扩展的能力.Redis Cluster是Redis官方的集群实现方案,在此之前已经有第三方Redis集群解决方案,如Twen ...

  5. Java创建对象的几种方式

    解析:Java创建对象的几种方式(重要):(1) 用new语句创建对象,这是最常见的创建对象的方法.(2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Co ...

  6. 数字化工厂ERP解决方案

    数字化工厂 数字化工厂建设,在现有基础上提升,实现管理层对订单进度.生产绩效.产能分析.质量管理.产品追溯和存货管理等提供业务分析报告:在控制层有可视化看板.移动客户端实现对生产状态的实时掌控,快速处 ...

  7. 关于TCP/IP协议栈

    1. TCP/IP协议栈 与OSI参考模型不同,TCP/IP协议栈共有4层,其中网络接口层对应OSI中的物理层和数据链路层,应用层对应OSI中的应用层.表示层和会话层. 在网络接口层的主要协议有:AR ...

  8. Java进制转换示例

    收藏的代码,以备查询之用.进制之间转换都是以十进制作为中间层的. int os = 16; //十进制转成十六进制: Integer.toHexString(os); //十进制转成八进制 Integ ...

  9. 使用Spring构建RMI服务器和客户端

    上一篇文章我们实用JDK原生API构造了简单RMI应用,本篇将实用Spring框架来构造RMI的应用,实用Spring你会体验到简单,不需要那么多的条条框框,因为Spring给你做了很多封装. 项目构 ...

  10. Struts2之Result详解

    上一篇我们把Struts2中的Action接收参数的内容为大家介绍了,本篇我们就一起来简单学习一下Action的4种Result type类型,分为:dispatcher(服务端页面跳转):redir ...