Android自定義類似支付寶密碼輸入的控制項

2021-07-13 14:39:39 字數 3064 閱讀 9164

前言:感覺自己記憶力不是很好,很多寫過的東西容易忘記,所以還是寫個部落格記錄一下,菜鳥一枚,望各位師傅指點。

嘿餵狗,來看我們要實現的效果(如果你說:」開發之前當然看不到效果,看個diao啊「。我只能說:會yy嗎【ps:老猿可能覺得此程式比較簡單,勿噴哈:)】)

接下來,講講如何實現,自定義控制項一般分為三種:

1、繼承已有的控制項來實現自定義控制項,如本例就需要繼承edittext

2、繼承乙個布局檔案實現自定義控制項

3、繼承view類來實現自定義控制項

我們實現的效果為第一種情況,繼承現有的控制項,本例我們需繼承edittext

實現步驟(此步驟為我的習慣而已)

1、根據需求,確定需要自定義的屬性(初學者也可不自定義屬性,先寫死,然後再考慮自定義屬性)

2、在res/values/attrs.xml中定義屬性

3、新建類,繼承edittext,然後–啪啪啪–碼功能

首先,思考有哪些東西需要自定義,本例可以自定義的有:邊框顏色,邊框寬度,圓角弧度,間隔線顏色,間隔線寬度,字型大小,字型顏色,數字個數等。

好,我們先看在attrs中如何自定義屬性(name為屬性名,format為此屬性的值型別)

name="verifyeditview">

name="verifyborderwidth"

format="dimension" />

name="verifybordercolor"

format="color" />

name="verifyborderradius"

format="dimension" />

name="verifycodetextsize"

format="dimension" />

name="verifycodetextcolor"

format="color" />

name="verifycodelength"

format="integer" />

declare-styleable>

resources>

然後,新建類verifyeditview

public

class

verifyeditview

extends

edittext

//在xml建立但是沒有指定style的時候被呼叫

public

verifyeditview(context context, attributeset attrs)

//有指定style的時候被呼叫(注:雖然我將**寫在這地方,但是我並沒有指定style,事實上,程式會使用第二個建構函式,只是將第三個引數傳0而已)

public

verifyeditview(context context, attributeset attrs, int defstyleattr)

//在繪製控制項時候會自動呼叫

@override

protected

void

ondraw(canvas canvas)

mpaint.setcolor(mcodecolor);

mpaint.setstyle(paint.style.fill);

mpaint.settextsize(mcodesize);

mpaint.settextalign(paint.align.center);

paint.fontmetrics fontmetrics = mpaint.getfontmetrics();

float baseline = (mrectf.bottom + mrectf.top - fontmetrics.bottom - fontmetrics.top)/2;

float codex;

//更新數字

for (int i=0;i2;

canvas.drawtext(mtextcontent.substring(i,i+1),codex,baseline,mpaint);}}

@override

protected

void

ontextchanged(charsequence text, int start, int lengthbefore, int lengthafter)

}

ok,控制項寫完了,那看看如何使用

.hjy

.verify

.view

.verifyeditview

android:id="@+id/edttxtverify"

android:layout_width="match_parent"

android:layout_height="46dp"

android:layout_margintop="25dp"

android:layout_marginbottom="15dp"

android:layout_marginleft="40dp"

android:layout_marginright="40dp"

android:background="@drawable/verify_border"

android:cursorvisible="false"

android:focusable="true"

android:focusableintouchmode="true"

android:inputtype="number"

android:maxlength="6"

drawable目錄下的verify_border:

xmlns:android="">

android:radius="10dp" />

android:color="@color/verifybordercolor"

android:width="1px" />

shape>

**:

Android 接入支付寶

這裡忽略申請支付賬戶方面的問題。2 建立應用 3 生成公鑰 和 私鑰 這是生成的鏈結 生成的公鑰和私鑰,都需要去掉 begin public key 和 end public key 並用編輯器把它弄成一行。上傳公鑰,這個是重點!4 怎麼上傳公鑰 這個重點,不然後面會出現 ali64 錯誤!4.1 ...

自定義view密碼框等同於支付寶支付密碼框

android 自定義view 密碼框 例子 遵從準則 暴露您view中所有影響可見外觀的屬性或者行為。通過xml新增和設定樣式 通過元素的屬性來控制其外觀和行為,支援和重要事件交流的事件 可以通過xml定義影響外邊和行為的屬性如下 邊框圓角值,邊框顏色,分割線顏色,邊框寬度,密碼長度,密碼大小,密...

自定義view仿支付寶密碼輸入框

效果圖 隨便講講實現,首先,這個的難點是自定義view如何獲取使用者的輸入。現在能找到的仿支付寶的這個密碼輸入框,其他主要是直接繼承edittext來解決輸入問題,或者用viewgroup來包裹edittext等,沒有直接繼承view來解決問題的,我在簡單的檢視edittext原始碼和搜尋stack...