模仿支付寶輸入效果,實(shí)現(xiàn)很簡(jiǎn)單,就是畫個(gè)矩形框和圓形,其他的通過組合view來實(shí)現(xiàn)所有功能,雖然簡(jiǎn)單但是封裝起來,方便以后使用,也分享一下,希望對(duì)別人也有點(diǎn)幫助。

1、如何使用,可以設(shè)置自己的進(jìn)入退出動(dòng)畫,不設(shè)置則沒有動(dòng)畫效果,自己覺得封裝之后還是非常用好的。
private MyInputPwdUtil myInputPwdUtil;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myInputPwdUtil = new MyInputPwdUtil(this); myInputPwdUtil.getMyInputDialogBuilder().setAnimStyle(R.style.dialog_anim); //可以定制自己進(jìn)入退出動(dòng)畫,不設(shè)置沒有動(dòng)畫 myInputPwdUtil.setListener(new InputPwdView.InputPwdListener() { @Override public void hide() { myInputPwdUtil.hide(); } @Override public void forgetPwd() { Toast.makeText(MainActivity.this, "忘記密碼", Toast.LENGTH_SHORT).show(); } @Override public void finishPwd(String pwd) { Toast.makeText(MainActivity.this, pwd, Toast.LENGTH_SHORT).show(); } });}public void show(View view){ myInputPwdUtil.show();}2、輸入框?qū)崿F(xiàn)主要代碼,就是繪制矩形和中間的圓形而已。
int height = getHeight(); int width = getWidth(); //畫邊框 RectF rect = new RectF(0, 0, width, height); borderPaint.setColor(borderColor); canvas.drawRoundRect(rect, borderRadius, borderRadius, borderPaint); //畫內(nèi)容區(qū)域 RectF rectContent = new RectF(rect.left + defaultContentMargin, rect.top + defaultContentMargin, rect.right - defaultContentMargin, rect.bottom - defaultContentMargin); borderPaint.setColor(getResources().getColor(R.color.myInputPwdBase_gray)); canvas.drawRoundRect(rectContent, borderRadius, borderRadius, borderPaint); //畫分割線:分割線數(shù)量比密碼數(shù)少1 borderPaint.setColor(borderColor); borderPaint.setStrokeWidth(defaultSplitLineWidth); for (int i = 1; i < passwordLength; i++) { float x = width * i / passwordLength; canvas.drawLine(x, 0, x, height, borderPaint); } //畫密碼內(nèi)容 float px, py = height / 2; float halfWidth = width / passwordLength / 2; for (int i = 0; i < textLength; i++) { px = width * i / passwordLength + halfWidth; canvas.drawCircle(px, py, passwordWidth, passwordPaint); }3、作為library的module,在定義使用到的屬性的時(shí)候最好特別能區(qū)分開,設(shè)置特定的開頭,這樣能避免引入自己的工程之后導(dǎo)致沖突。
如有bug,謝謝指出。
源碼下載
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注