Android 自定義View 密碼框?qū)嵗a
暴露您view中所有影響可見外觀的屬性或者行為。
•通過XML添加和設(shè)置樣式
•通過元素的屬性來控制其外觀和行為,支持和重要事件交流的事件監(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ù)字鍵盤設(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); } }
相關(guān)文章
Android?Flutter中異常處理的方法總結(jié)
這篇文章主要為大家詳細介紹了Android?Flutter中異常處理的相關(guān)知識,文中的示例代碼講解詳細,具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-06-06Android實現(xiàn)網(wǎng)易云音樂的旋轉(zhuǎn)專輯View
這篇文章主要為大家詳細介紹了Android實現(xiàn)網(wǎng)易云音樂的旋轉(zhuǎn)專輯View,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-11-11android 自定義ScrollView實現(xiàn)背景圖片伸縮的實現(xiàn)代碼及思路
本文純屬個人見解,是對前面學(xué)習(xí)的總結(jié),如有描述不正確的地方還請高手指正~,首先還是按照通例給大家看下示例.2013-05-05Android Studio使用教程(四):Gradle基礎(chǔ)
這篇文章主要介紹了Android Studio使用教程(四):Gradle基礎(chǔ),本文講解了什么是Gradle、安裝Gradle、Gradle 基本概念等內(nèi)容,需要的朋友可以參考下2015-05-05android中webview控件和javascript交互實例
這篇文章主要介紹了android中webview控件和javascript交互實例,例子中包括javascript調(diào)用java的方法,java代碼中調(diào)用javascript的方法,需要的朋友可以參考下2014-07-07