乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Android Saripaar 注解詳解

       小仙女本仙人 2022-01-03

      寫這篇文章的原因

      在移動端一般很少使用復(fù)雜的表單,一般針對于屬性的更改都會打開一個新的頁面進(jìn)行更改。雖然不多,但是也會有。如果一個頁面要輸入的內(nèi)容包括姓名、地址、郵箱、手機(jī)號等,對各個屬性的驗證會非常麻煩,并且非常的不優(yōu)雅。

      于是,saripaar就出現(xiàn)了,一種基于規(guī)則的Android UI輸入驗證庫,通過注解即可標(biāo)注驗證規(guī)則。

      使用過程中發(fā)現(xiàn)只有四個字:簡單好用。但是官方對注解的使用并沒有一份完整的文檔,故參考源碼整理了現(xiàn)有的所有注解(基于版本2.0.3)。

      如何使用

      導(dǎo)入依賴

      第一步當(dāng)然是導(dǎo)入依賴?yán)?,可通過implementation 'com.mobsandgeeks:android-saripaar:(latest version)'導(dǎo)入saripaar,將(latest version)替換為最新版本即可。

      使用注解

      對需要進(jìn)行驗證的可輸入View加上注解來標(biāo)注驗證規(guī)則,例

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

      該注解表示et1中的輸入內(nèi)容長度只能在6到9的閉區(qū)間。

      實例化Validator

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

      Validator負(fù)責(zé)驗證給定容器中的View,通常容器為ActivityFragment。但也可以用包含View的其他類作為容器。

      實現(xiàn)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用戶監(jiān)聽回調(diào)結(jié)果,并進(jìn)行相應(yīng)的處理。

      調(diào)用驗證方法

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

      其余的高級用法在此不做介紹,該文章主要介紹各個注解的使用。

      注解

      @AssertFalse

      描述

      用于判斷輸入內(nèi)容是否為false。

      作用范圍

      • CheckBox
      • RadioButton
      • RadioGroup

      參數(shù)

      • sequence:確定規(guī)則的判定順序,當(dāng)單個View有多個規(guī)則時生效
      • messageResId:錯誤提示文字的資源文件ID
      • message:錯誤提示文字
        注:所有注解均有這三個參數(shù),故之后注解省略不寫

      @AssertTrue

      描述

      用于判斷輸入內(nèi)容是否為true。

      作用范圍

      • CheckBox
      • RadioButton
      • RadioGroup

      @Checked

      描述

      用于判斷輸入內(nèi)容是否為預(yù)設(shè)值,默認(rèn)預(yù)設(shè)值為true。

      作用范圍

      • CheckBox
      • RadioButton
      • RadioGroup

      參數(shù)

      • value:用于設(shè)置預(yù)設(shè)值,默認(rèn)為true

      @ConfirmEmail

      描述

      判斷當(dāng)前輸入內(nèi)容與被@Email注解的View的內(nèi)容是否一致。
      注:當(dāng)前容器所持有的被@Email注解的View必須且只允許有一個。

      作用范圍

      • TextView

      @ConfirmPassword

      描述

      判斷當(dāng)前輸入內(nèi)容與被@Password注解的View的內(nèi)容是否一致。
      注:當(dāng)前容器所持有的被@Password注解的View必須且只允許有一個。

      作用范圍

      • TextView

      @CreditCard

      描述

      判斷輸入內(nèi)容是否符合信用卡卡號規(guī)則。

      作用范圍

      • TextView

      參數(shù)

      • cardTypes:是一個數(shù)組,用于確定信用卡的類型,每種類型對應(yīng)著不同的正則表達(dá)式
        • Type.AMEX,美國運通卡,對應(yīng)著^(3[47]\d{13})$
        • Type.DINERS,大萊信用卡,對應(yīng)著^(30[0-5]\d{11}|3095\d{10}|36\d{12}|3[8-9]\d{12})$
        • Type.DISCOVER,發(fā)現(xiàn)卡,對應(yīng)著^(6011\d{12})$、^(64[4-9]\d{13})$^(65\d{14})$
        • Type.MASTERCARD,萬事達(dá)卡,對應(yīng)著^(5[1-5]\d{14})$
        • Type.VISA,簽證卡,對應(yīng)著^(4)(\d{12}|\d{15})$
        • Type.NONE,不允許任何內(nèi)置的信用卡,適用于自定義信用卡類型

      @DecimalMax

      描述

      限制輸入內(nèi)容的最大值,輸入內(nèi)容會被強(qiáng)轉(zhuǎn)為Double類型,若輸入文字不符合Double類型,會報ConversionException異常。

      作用范圍

      • TextView

      參數(shù)

      • valuedouble類型,最大值。

      @DecimalMin

      描述

      限制輸入內(nèi)容的最小值,輸入內(nèi)容會被強(qiáng)轉(zhuǎn)為Double類型,若輸入文字不符合Double類型,會報ConversionException異常。

      作用范圍

      • TextView

      參數(shù)

      • valuedouble類型,最小值。

      @Digits

      描述

      判斷輸入內(nèi)容是否為數(shù)字,可定義整數(shù)部分以及小數(shù)部分的最大位數(shù)。

      作用范圍

      • TextView

      參數(shù)

      • integer:整數(shù)部分最大位數(shù)
      • fraction:小數(shù)部分最大位數(shù)
        注:輸入內(nèi)容需滿足正則
        String.format("(\\d{0,%d})(\\.\\d{1,%d})?", integer, fraction);

      @Domain

      描述

      判斷輸入內(nèi)容是否是一個有效的域名。

      作用范圍

      • TextView

      參數(shù)

      • allowLocal:本地地址是否有效,默認(rèn)為false

      @Email

      描述

      判斷輸入內(nèi)容是否是一個有效的郵箱地址。

      作用范圍

      • TextView

      參數(shù)

      • allowLocal:本地地址是否有效,默認(rèn)為false

      @Future

      描述

      判斷輸入的時間是否是未來時間(與當(dāng)前時間相比)。輸入的時間必須滿足相應(yīng)的格式。

      作用范圍

      • TextView

      參數(shù)

      • dateFormat:時間的格式,默認(rèn)為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

      描述

      判斷輸入的內(nèi)容是否是一個IP,IPv4IPv6

      作用范圍

      • TextView

      @Isbn

      描述

      判斷輸入的內(nèi)容是否是一個Isbn,即國際標(biāo)準(zhǔn)書號。

      作用范圍

      • TextView

      @Length

      描述

      限制輸入內(nèi)容的文本長度,可自定義最大長度和最小長度。

      作用范圍

      • TextView

      參數(shù)

      • min:文本的最小長度,默認(rèn)為Integer.MIN_VALUE
      • max:文本的最大長度,默認(rèn)為Integer.MAX_VALUE
      • trim:是否需要先做trim操作,默認(rèn)為false

      @Max

      描述

      限制輸入內(nèi)容的最大值,輸入內(nèi)容會被強(qiáng)轉(zhuǎn)為Integer類型,若輸入文字不符合Integer類型,會報ConversionException異常。

      作用范圍

      • TextView

      參數(shù)

      • valueint類型,最大值。

      @Min

      描述

      限制輸入內(nèi)容的最小值,輸入內(nèi)容會被強(qiáng)轉(zhuǎn)為Integer類型,若輸入文字不符合Integer類型,會報ConversionException異常。

      作用范圍

      • TextView

      參數(shù)

      • valueint類型,最小值。

      @NotEmpty

      描述

      判斷輸入內(nèi)容是否非空。

      作用范圍

      • TextView

      參數(shù)

      • trim:判斷之前是否要先trim,默認(rèn)為false
      • emptyText:設(shè)置“空字符串”,可自定義一段文本,當(dāng)輸入此文本是則為空
      • emptyTextResId:設(shè)置“空字符串”的資源文件

      @Order

      描述

      確定校驗字段的順序。當(dāng)一個容器有多個View需要檢驗時,可通過該注解確定校驗順序。

      作用范圍

      • TextView
      • CheckBox
      • RadioButton
      • RadioGroup
      • Spinner

      參數(shù)

      • valueint類型,用于確定順序

      @Password

      描述

      用于校驗文本是否符合密碼的規(guī)則。

      作用范圍

      • TextView

      參數(shù)

      • min:最小字符數(shù),默認(rèn)為6
      • schemeScheme類型,利用正則確定密碼的輸入格式,只能為Scheme類型,不可自定義,默認(rèn)為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

      描述

      判斷輸入的時間是否是過去時間(與當(dāng)前時間相比)。輸入的時間必須滿足相應(yīng)的格式。

      作用范圍

      • TextView

      參數(shù)

      • dateFormat:時間的格式,默認(rèn)為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

      描述

      判斷輸入的內(nèi)容是否滿足正則表達(dá)式。

      作用范圍

      • TextView

      參數(shù)

      • regex:正則表達(dá)式
      • caseSensitive:是否區(qū)分大小寫

      @Select

      描述

      判斷選擇的索引是否等于默認(rèn)值,如果不等于則通過,默認(rèn)值為0。

      作用范圍

      • Spinner

      參數(shù)

      • defaultSelection:設(shè)置默認(rèn)值

      @Url

      描述

      判斷輸入的內(nèi)容是否是一個url。

      作用范圍

      • TextView

      參數(shù)

      • schemes:是一個數(shù)組,url的協(xié)議數(shù)組,可自定義,默認(rèn)為{"http", "https", "ftp"}
      • allowFragmentsurl片段是否允許通過,默認(rèn)為true

      對于@Optional@Or

      雖然該版本已經(jīng)有了這兩個注解,但是并不能使用,參考作者在stackoverflow上的回復(fù),注解將會在2.1.0版本上線

      總結(jié)

      本篇文章簡單介紹了Android Saripaar的用法,并著重列舉了各個注解的作用以及各個參數(shù)的意思,方便以后的查詢。

      通過閱讀源碼對saripaar有了更深的認(rèn)識,并對基于注解的框架有了一個完備的認(rèn)知。

      以后如果有時間的話總結(jié)一下Android Saripaar實現(xiàn)的細(xì)節(jié)。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多