先上效果图
设计思路
刚开始想过使用EditText来实现,但是具体实施时发现并不是这么容易,而且还有一堆的坑,不如直接继承View自定义来的方便,先在onDraw方法中绘制边框及验证码,调整弹出输入法只能输入数字,监听输入法输入,每输入一个字符都需要重新绘制,另外考虑到扩展性需要重写onMeasure方法来计算View的大小。
具体实现
首先需要在onDraw中绘制外面带有圆角的矩形边框以及数字中间的分割线。
/**
* 绘制边框及分割线
*
* @param canvas
*/
private void drawFrame(Canvas canvas) {
RectF oval = new RectF(padding,
padding,
getWidth() - padding,
getHeight() - padding);
canvas.drawRoundRect(oval, 10, 10, boxPaint);
for (int i = 1; i < count; i++) {
canvas.drawLine(padding + boxSize * i,
padding,
padding + boxSize * i,
padding + boxSize,
boxPaint);
}
}
然后再绘制数字验证码&#x