遵从准则

暴露您view中所有影响可见外观的属性或者行为。

  • 通过XML添加和设置样式
  • 通过元素的属性来控制其外观和行为,支持和重要事件交流的事件监听器

详细步骤见:Android 自定义View步骤

样子

支持的样式

可以通过XML定义影响外边和行为的属性如下

边框圆角值,边框颜色,分割线颜色,边框宽度,密码长度,密码大小,密码颜色

<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功能,可以获得数据值,数字键盘设置等

绘制逻辑的主要代码

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);// 内容区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);}
}   

完整代码下载

https://github.com/tianshaojie/Android-PasswordInputView

转载于:https://www.cnblogs.com/purediy/p/android_custom_view.html

[原] Android 自定义View 密码框 例子相关推荐

  1. android自定义曲线控件,Android自定义view进阶-- 神奇的贝塞尔曲线

    上一篇介绍了自定义view需要知道的基本函数.新开一篇献给借给我vpn的深圳_奋斗小哥. 转载请注明出处:http://blog.csdn.net/wingichoy/article/details/ ...

  2. android wear支付宝6,Android自定义View仿支付宝输入六位密码功能

    跟选择银行卡界面类似,也是用一个PopupWindow,不过输入密码界面是一个自定义view,当输入六位密码完成后用回调在Activity中获取到输入的密码并以Toast显示密码.效果图如下: 自定义 ...

  3. Android自定义View之Paint绘制文字和线

    Android自定义View系列 Android自定义View注意事项 Android自定义View之图像的色彩处理 Android自定义View之Canvas Android自定义View之轻松实现 ...

  4. android自定义view获取控件,android 自定义控件View在Activity中使用findByViewId得到结果为null...

    转载:http://blog.csdn.net/xiabing082/article/details/48781489 1.  大家常常自定义view,,然后在xml 中添加该view 组件..如果在 ...

  5. Android自定义View:ViewGroup(三)

    自定义ViewGroup本质是什么? 自定义ViewGroup本质上就干一件事--layout. layout 我们知道ViewGroup是一个组合View,它与普通的基本View(只要不是ViewG ...

  6. android代码实现手机加速功能,Android自定义View实现内存清理加速球效果

    Android自定义View实现内存清理加速球效果 发布时间:2020-09-21 22:21:57 来源:脚本之家 阅读:105 作者:程序员的自我反思 前言 用过猎豹清理大师或者相类似的安全软件, ...

  7. android自定义控件是一个 内部类 如何在xml中引用,android 自定义view属性

    android 自定义view属性 一个完美的自定义控件也可以添加xml来配置属性和风格.要实现这一点,可按照下列步骤来做: 1) 添加自定义属性到xml文件中 2) 在xml的中,指定属性的值 3) ...

  8. android可以定义函数吗,Android自定义view 你所需要知道的基本函数总结

    Android自定义view 你所需要知道的基本函数 首先 往Canvas上面draw需要一个Paint. 画笔常用的函数有哪些呢.由于木有调试环境,函数基本上默写,有错请评论提出,蟹蟹! Paint ...

  9. 精通Android自定义View(十三)事件分发简述

    1 事件序列 (1)手指接触屏幕后会产生一系列事件,事件分为3种:ACTION_DOWN(手指刚刚接触屏幕).ACTION_MOVE(手指在屏幕移动).ACTION_UP(手指从屏幕松开) (2)一个 ...

最新文章

  1. Maya硬表面建模学习教程 Master Hard Surface Modeling in Maya 2020
  2. 教你用TensorFlow实现神经网络(附代码)
  3. 安天365第二期线上交流
  4. laravel翻看php日志,关于Laravel的日志用法
  5. Perhaps you are running on a JRE rather than a JDK?
  6. 深入iOS系统底层之CPU寄存器介绍
  7. 长江浪花~朵儿朵尔朵
  8. 基于Linux和MiniGUI的嵌入式系统软件开发指南(二)
  9. net core体系-web应用程序-4asp.net core2.0 项目实战(CMS)-第二章 入门篇-快速入门ASP.NET Core看这篇就够了...
  10. csdn泄漏密码分析
  11. 【CV-Learning】线性分类器(SVM基础)
  12. FBEC2020 | 贾瑶琪:打造区块链项目最好的方式,是打造开源的系统
  13. 笔记本电脑亮度不能调节的一种解决方案
  14. 找工作经历--生活的味道都在里面
  15. mysql查询统计不及格人数_MySQL,查询及格人数,不及格人数
  16. Java中的Math函数常用方法都在这里
  17. 主机和服务器之间有何区别?
  18. mysql 1677_MySQL之数据库主从复制配置报错Last_Errno: 1677
  19. 创业起步阶段需要注意什么?
  20. 2021年高考安庆10中成绩查询,2021年安庆高中学校排名及录取分数线排名

热门文章

  1. 智慧讲台:office 文件 pdf 文件 转成 png图片
  2. 【maven】论 maven settings 文件 mirrors 对 IDEA 的影响
  3. 95-50-020-java.nio.channels-NIO-NIO概览
  4. 【SpringCloud】Spring cloud Alibaba Sentinel 服务降级 (阿里版本Hystrix)
  5. 【java】java 扩展可回调的Future
  6. Spark 2.2 Core :TimSort 的原理与源码分析
  7. Spring:Spring IOC注解方式注册beanDefinition
  8. Cookie、Session、Token、JWT分别是什么(三)
  9. 【linux系统编程】linux用户及权限管理
  10. 由浅入深逐步了解 Synchronized