首页 > 系统 > Android > 正文

android仿支付宝密码输入框效果

2019-10-22 18:21:31
字体:
来源:转载
供稿:网友

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

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

布局文件:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <com.example.custompasswordview.PasswordView  android:id="@+id/passwordview"  android:layout_width="match_parent"  android:layout_height="105px"  android:layout_marginTop="100px"  android:layout_marginLeft="20px"  android:layout_marginRight="20px"  android:inputType="number"  android:cursorVisible="false"  android:focusable="true"  android:focusableInTouchMode="true"  android:enabled="true"  android:clickable="true"   /> <Button  android:id="@+id/btn_pass_reset"  android:layout_width="250px"  android:layout_height="90px"  android:text="重置"  android:layout_below="@id/passwordview"  android:layout_marginTop="20px"  android:layout_marginLeft="40px"  android:gravity="center"  /></RelativeLayout>

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(); }}

效果:

android,支付宝,密码

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

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


注:相关教程知识阅读请移步到Android开发频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表