100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 仿微信/支付宝的自定义提现密码输入(二)

仿微信/支付宝的自定义提现密码输入(二)

时间:2022-06-29 10:53:58

相关推荐

仿微信/支付宝的自定义提现密码输入(二)

根据项目要求对上个输入框进行了处理:

改动如下:

1.弹框的标题栏移到curtomdialog里处理,避免在自定义控件中进行点击事件。

2.实现弹框的取消,和忘记密码的点击事件

dialog_normal.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#ffffff"tools:context="com.example.myapplication.MainActivity"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="81dp"android:orientation="vertical"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="40dp"android:layout_margin="5dp"android:id="@+id/relativeLayout"><!-- 取消按钮 --><ImageViewandroid:id="@+id/img_cancel"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/icon_clean"android:layout_centerVertical="true"/><TextViewandroid:id="@+id/dialog_title"android:layout_width="wrap_content"android:layout_height="40dp"android:layout_centerInParent="true"android:gravity="center"android:text="输入提现密码"android:textColor="#333333"android:textSize="14sp" /></RelativeLayout><Viewandroid:layout_width="match_parent"android:layout_height="0.5dp"android:background="#e0e0e0" /><!-- 6位密码框布局,需要一个圆角边框的shape作为layout的背景 --><TextViewandroid:layout_width="match_parent"android:layout_height="30dp"android:text="提现金额600元"android:textSize="13sp"android:gravity="center"android:layout_marginTop="10dp"/></LinearLayout><com.example.myapplication.PasswordViewandroid:id="@+id/pwd_view"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="96dp"/><!--<!– 忘记密码链接 –>--><!--<RelativeLayout--><!--android:layout_width="match_parent"--><!--android:layout_height="30dp"--><!--android:layout_gravity="center_vertical"--><!--android:layout_marginTop="15dp">--><!--<TextView--><!--android:id="@+id/tv_title1"--><!--android:layout_width="wrap_content"--><!--android:layout_height="match_parent"--><!--android:text="提现后预计一到三个小时到账"--><!--android:textColor="#b3b3b3"--><!--android:layout_marginLeft="20dp"/>--><!--<TextView--><!--android:id="@+id/tv_forgetPwd"--><!--android:layout_width="wrap_content"--><!--android:layout_height="match_parent"--><!--android:layout_alignParentRight="true"--><!--android:text="忘记密码?"--><!--android:textColor="#4d4d4d"--><!--android:layout_marginRight="20dp"/>--><!--</RelativeLayout>--></RelativeLayout>

layout_password.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="/apk/res/android"android:id="@+id/rl_bottom"android:layout_width="match_parent"android:layout_height="fill_parent"android:background="#ffffff"android:orientation="vertical"><LinearLayoutandroid:id="@+id/linear_pass"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><!--<View--><!--android:layout_width="match_parent"--><!--android:layout_height="0.5dp"--><!--android:background="#e0e0e0" />--><!--<!– 6位密码框布局,需要一个圆角边框的shape作为layout的背景 –>--><!--<TextView--><!--android:layout_width="match_parent"--><!--android:layout_height="30dp"--><!--android:text="提现金额600元"--><!--android:textSize="19sp"--><!--android:gravity="center"--><!--android:layout_marginTop="10dp"/>--><LinearLayoutandroid:id="@+id/ll_pwd"android:layout_width="match_parent"android:layout_height="43dp"android:layout_marginLeft="22dp"android:layout_marginRight="20dp"android:layout_marginTop="10dp"android:background="@drawable/shape_input_area"android:orientation="horizontal"><!--inputType设置隐藏密码明文textSize设置大一点,否则“点”太小了,不美观!--><!--<TextView--><!--android:id="@+id/tv_pass1"--><!--android:layout_width="0dp"--><!--android:layout_height="match_parent"--><!--android:layout_weight="1"--><!--android:gravity="center"--><!--android:inputType="numberPassword"--><!--android:textSize="32sp" />--><!--<View--><!--android:layout_width="1dp"--><!--android:layout_height="match_parent"--><!--android:background="#999999" />--><!--<TextView--><!--android:id="@+id/tv_pass2"--><!--android:layout_width="0dp"--><!--android:layout_height="match_parent"--><!--android:layout_weight="1"--><!--android:gravity="center"--><!--android:inputType="numberPassword"--><!--android:textSize="32sp" />--><!--<View--><!--android:layout_width="1dp"--><!--android:layout_height="match_parent"--><!--android:background="#999999" />--><!--<TextView--><!--android:id="@+id/tv_pass3"--><!--android:layout_width="0dp"--><!--android:layout_height="match_parent"--><!--android:layout_weight="1"--><!--android:gravity="center"--><!--android:inputType="numberPassword"--><!--android:textSize="32sp" />--><!--<View--><!--android:layout_width="1dp"--><!--android:layout_height="match_parent"--><!--android:background="#999999" />--><!--<TextView--><!--android:id="@+id/tv_pass4"--><!--android:layout_width="0dp"--><!--android:layout_height="match_parent"--><!--android:layout_weight="1"--><!--android:gravity="center"--><!--android:inputType="numberPassword"--><!--android:textSize="32sp" />--><!--<View--><!--android:layout_width="1dp"--><!--android:layout_height="match_parent"--><!--android:background="#999999" />--><!--<TextView--><!--android:id="@+id/tv_pass5"--><!--android:layout_width="0dp"--><!--android:layout_height="match_parent"--><!--android:layout_weight="1"--><!--android:gravity="center"--><!--android:inputType="numberPassword"--><!--android:textSize="32sp" />--><!--<View--><!--android:layout_width="1dp"--><!--android:layout_height="match_parent"--><!--android:background="#999999" />--><!--<TextView--><!--android:id="@+id/tv_pass6"--><!--android:layout_width="0dp"--><!--android:layout_height="match_parent"--><!--android:layout_weight="1"--><!--android:gravity="center"--><!--android:inputType="numberPassword"--><!--android:textSize="32sp" />--></LinearLayout><!-- 忘记密码链接 --><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="30dp"android:layout_gravity="center_vertical"android:layout_marginTop="15dp"><TextViewandroid:id="@+id/tv_title1"android:layout_width="wrap_content"android:layout_height="match_parent"android:text="提现后预计一到三个小时到账"android:textColor="#b3b3b3"android:layout_marginLeft="20dp"/><TextViewandroid:id="@+id/tv_forgetPwd"android:layout_width="wrap_content"android:layout_height="match_parent"android:layout_alignParentRight="true"android:text="忘记密码?"android:textColor="#4d4d4d"android:layout_marginRight="20dp"/></RelativeLayout></LinearLayout><!-- 输入键盘 --></RelativeLayout>

在自定义控件passwordView中的接口中做了忘记密码的点击事件处理

public interface OnPasswordInputFinish {void inputFinish();void onClick();}

// 设置监听方法,在第6位输入完成后触发public void setOnFinishInput(final OnPasswordInputFinish pass) {forgetPassword.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View view) {pass.onClick();}}); //点击忘记密码需要实现的方法tvList[5].addTextChangedListener(new TextWatcher() {@Overridepublic void beforeTextChanged(CharSequence s, int start, int count,int after) {}@Overridepublic void onTextChanged(CharSequence s, int start, int before,int count) {}@Overridepublic void afterTextChanged(Editable s) {if (s.toString().length() == 1) {strPassword = ""; // 每次触发都要先将strPassword置空,再重新获取,避免由于输入删除再输入造成混乱for (int i = 0; i < 6; i++) {strPassword += tvList[i].getText().toString().trim();}if (pass != null) {pass.inputFinish(); // 接口中要实现的方法,完成密码输入完成后的响应逻辑}}}});}

这样创建自定义控件时,就可以实现其中的方法

CurtomDialog.java

package com.example.myapplication;import android.app.Dialog;import android.graphics.Color;import android.graphics.drawable.ColorDrawable;import android.os.Bundle;import android.support.annotation.NonNull;import android.support.v4.app.DialogFragment;import android.util.Log;import android.view.Gravity;import android.view.View;import android.view.Window;import android.view.WindowManager;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;/*** Created by 付刚 on /11/27.*/public class CustomDialog extends DialogFragment {private PasswordView pwdView;private ImageView cancel;private TextView title;@NonNull@Overridepublic Dialog onCreateDialog(Bundle savedInstanceState) {Dialog dialog = new Dialog(getActivity(), R.style.Dialog);dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);dialog.setCanceledOnTouchOutside(true);/**设置宽度为屏宽、靠近屏幕底部*/Window window = dialog.getWindow();/**设置背景透明*/window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));WindowManager.LayoutParams wlp = window.getAttributes();wlp.gravity = Gravity.BOTTOM;dialog.setContentView(R.layout.dialog_normal);wlp.width = WindowManager.LayoutParams.MATCH_PARENT;wlp.height = (int) getResources().getDimension(R.dimen.custom_hei);window.setAttributes(wlp);initViews(dialog);return dialog;}private void initViews(Dialog dialog) {pwdView = dialog.findViewById(R.id.pwd_view);cancel=dialog.findViewById(R.id.img_cancel);title=dialog.findViewById(R.id.dialog_title);pwdView.setOnFinishInput(new PasswordView.OnPasswordInputFinish() {@Overridepublic void inputFinish() {Toast.makeText(getActivity(), pwdView.getStrPassword(), Toast.LENGTH_SHORT).show();Log.e("fugang", "密码是" + pwdView.getStrPassword());}@Overridepublic void onClick() {Toast.makeText(getActivity(), "忘记密码", Toast.LENGTH_SHORT).show();Log.e("fugang", "密码是" + pwdView.getStrPassword());}});cancel.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {dismiss();}});}}

这样就可以了,可以实现项目中需求

源码下载/download/fugang1230/10214579

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。