Android 自定義View 密碼框?qū)嵗a
暴露您view中所有影響可見外觀的屬性或者行為。
•通過XML添加和設置樣式
•通過元素的屬性來控制其外觀和行為,支持和重要事件交流的事件監(jiān)聽器
詳細步驟見:Android 自定義View步驟
效果圖展示:

支持的樣式
可以通過XML定義影響外邊和行為的屬性如下
邊框圓角值,邊框顏色,分割線顏色,邊框?qū)挾?,密碼長度,密碼大小,密碼顏色
<declare-styleable name="PasswordInputView"> <attr name="borderWidth" format="dimension"/> <attr name="borderColor" format="color"/> <attr name="borderRadius" format="dimension"/> <attr name="passwordLength" format="integer"/> <attr name="passwordWidth" format="dimension"/> <attr name="passwordColor" format="color"/> <attr name="passwordRadius" format="dimension"/> </declare-styleable>
同時支持原來EditText功能,可以獲得數(shù)據(jù)值,數(shù)字鍵盤設置等
繪制邏輯的主要代碼
protected void onDraw(Canvas canvas) {
int width = getWidth();
int height = getHeight();
// 外邊框
RectF rect = new RectF(0, 0, width, height);
borderPaint.setColor(borderColor);
canvas.drawRoundRect(rect, borderRadius, borderRadius, borderPaint);
// 內(nèi)容區(qū)
RectF rectIn = new RectF(rect.left + defaultContMargin, rect.top + defaultContMargin,
rect.right - defaultContMargin, rect.bottom - defaultContMargin);
borderPaint.setColor(Color.WHITE);
canvas.drawRoundRect(rectIn, borderRadius, borderRadius, borderPaint);
// 分割線
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);
}
// 密碼
float cx, cy = height/ 2;
float half = width / passwordLength / 2;
for(int i = 0; i < textLength; i++) {
cx = width * i / passwordLength + half;
canvas.drawCircle(cx, cy, passwordWidth, passwordPaint);
}
}
相關文章
Android編程實現(xiàn)TextView部分顏色變動的方法
這篇文章主要介紹了Android編程實現(xiàn)TextView部分顏色變動的方法,涉及Android針對TextView樣式操作的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11
Android中EditText實現(xiàn)不可編輯解決辦法
這篇文章主要介紹了Android中EditText實現(xiàn)不可編輯解決辦法,需要的朋友可以參考下2014-12-12
android中soap協(xié)議使用(ksoap調(diào)用webservice)
kSOAP是如何調(diào)用ebservice的呢,首先要使用SoapObject,這是一個高度抽象化的類,完成SOAP調(diào)用??梢哉{(diào)用它的addProperty方法填寫要調(diào)用的webservice方法的參數(shù)2014-02-02
android studio logcat 無篩選 顯示全部日志 無應用包名區(qū)分方式
這篇文章主要介紹了android studio logcat 無篩選 顯示全部日志 無應用包名區(qū)分方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04

