本文实例为大家分享了android仿支付宝密码输入框展示的具体代码,供大家参考,具体内容如下

这个没什么好分析的,就是一些基本的绘制什么线,矩形什么的,看代码更具体

布局文件:

<?xml version="1.0" encoding="utf-8"?>  

MainActivity.java

package com.example.custompasswordview;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.Button;public class MainActivity extends Activity { private Button btn_pass_reset; private PasswordView passwordview; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  btn_pass_reset = (Button) findViewById(R.id.btn_pass_reset);  passwordview = (PasswordView) findViewById(R.id.passwordview);  btn_pass_reset.setOnClickListener(new View.OnClickListener() {   @Override   public void onClick(View v) {    passwordview.setEmpeyText();   }  }); }}

自定义EditText输入框

package com.example.custompasswordview;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;import android.util.Log;import android.widget.EditText;import android.widget.Toast;/** * Created by Adminis on 2016/8/7. */public class PasswordView extends EditText { private static final String TAG ="PasswordView" ; private Paint bordPaint;//外框画笔 private Paint linePaint;//线 的画笔 private Paint passTextPaint;//密码画笔 private int width; private int height; private int passwordLength = 6;//代码的长度 private int textLength; private int radius = 15; public PasswordView(Context context) {  this(context,null); } public PasswordView(Context context, AttributeSet attrs) {  this(context, attrs,0); } public PasswordView(Context context, AttributeSet attrs, int defStyleAttr) {  super(context, attrs, defStyleAttr);  initPaint(); } /**  * 初始化画笔  */ private void initPaint() {  setFocusable(true);  bordPaint = new Paint();  bordPaint.setStrokeWidth(8);  bordPaint.setColor(Color.WHITE);  bordPaint.setStyle(Paint.Style.FILL);  linePaint = new Paint();  linePaint.setColor(Color.parseColor("#838B8B"));  linePaint.setStrokeWidth(4);  passTextPaint = new Paint();  passTextPaint.setColor(Color.parseColor("#000000"));  passTextPaint.setStrokeWidth(12); } @Override protected void onDraw(Canvas canvas) {  super.onDraw(canvas);  height = getMeasuredHeight();  width = getMeasuredWidth();  drawRoundRect(canvas);  drawLine(canvas);  drawTextPass(canvas); } /**  * 绘制密码  * @param canvas  */ private void drawTextPass(Canvas canvas) {  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, radius, passTextPaint);  } } /**  * 绘制线  * @param canvas  */ private void drawLine(Canvas canvas) {  for (int i = 1; i < passwordLength; i++) {   float x = width * i / passwordLength;   canvas.drawLine(x, 12, x, height-12, linePaint);  } } /**  * 绘制背景  * @param canvas  */ private void drawRoundRect(Canvas canvas) {   canvas.drawRoundRect(0,0,width,height,12,12,bordPaint); } @Override protected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) {  super.onTextChanged(text, start, lengthBefore, lengthAfter);  this.textLength = text.toString().length();  if(textLength==6){   Toast.makeText(getContext(),"您设置的密码为"+text,Toast.LENGTH_SHORT).show();  }  invalidate(); } public void setEmpeyText(){  setText("");  invalidate(); }}

效果:

github:https://github.com/zhouguizhi/ZhiFuBaoPwdView

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多相关文章

  1. Android打包签名——生成keystore到完成签名
  2. Android标题栏渐变色,沉寂式状态栏
  3. Android开发菜鸟——RecyclerView
  4. Android中View的绘制流程详解
  5. 手把手教你使用MPAndroidChart实现柱状图,饼状图和线性图
  6. android图像绘制(五)——画布保存为图片
  7. Android(安卓)GUI更新过程
  8. 实习杂记(28):Android不同层次开启硬件加速的方式
  9. 【Android】OpenGL_ES基本用法

随机推荐

  1. Android Studio无法打开avd
  2. Android启动后遇到错误
  3. Android获取手机当前连接的WiFi信息(SSID,I
  4. Android Lib Project与Android Project中
  5. Android WebView使用全面解析(加载网络资
  6. 6.2、Android中向Internet发送xml数据
  7. android view的width或者height变化的动
  8. 《android关于WIFI的操作》
  9. android 彩信分析
  10. Android 点击两次返回键退出程序