主页 > 手机  > 

【Android】安卓付款密码输入框、支付密码输入框

【Android】安卓付款密码输入框、支付密码输入框

如图

代码部分:

public class PayPasswordDialog extends AppCompatDialogFragment { private String mPayPass = ""; private String mTitle, mMoney; private final TextView[] mPayPassTextViewArray = new TextView[6]; private List<Integer> mPayPassList; private PayPassDialogAdapter adapter; private RecyclerView mPayPassRecyclerView; private TextView tvTitle, tvMoney; private ImageView ivClose; public static PayPasswordDialog newInstance() { Bundle args = new Bundle(); PayPasswordDialog fragment = new PayPasswordDialog(); fragment.setArguments(args); return fragment; } @NonNull @Override public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { Dialog dialog = new Dialog(getActivity(), R.style.BottomDialogFragment); dialog.setContentView(R.layout.dialog_pay_pass); dialog.setCancelable(true); dialog.setCanceledOnTouchOutside(true); Window window = dialog.getWindow(); if (window != null) { WindowManager.LayoutParams lp = window.getAttributes(); lp.gravity = Gravity.BOTTOM; lp.width = WindowManager.LayoutParams.MATCH_PARENT; lp.height = WindowManager.LayoutParams.WRAP_CONTENT; window.setAttributes(lp); window.setBackgroundDrawableResource(android.R.color.transparent); } initView(dialog); return dialog; } private void initView(Dialog dialog) { mPayPassRecyclerView = dialog.findViewById(R.id.recycler_view); tvTitle = dialog.findViewById(R.id.tv_title); tvMoney = dialog.findViewById(R.id.tv_money); ivClose = dialog.findViewById(R.id.iv_close); mPayPassTextViewArray[0] = dialog.findViewById(R.id.tv_pass1); mPayPassTextViewArray[1] = dialog.findViewById(R.id.tv_pass2); mPayPassTextViewArray[2] = dialog.findViewById(R.id.tv_pass3); mPayPassTextViewArray[3] = dialog.findViewById(R.id.tv_pass4); mPayPassTextViewArray[4] = dialog.findViewById(R.id.tv_pass5); mPayPassTextViewArray[5] = dialog.findViewById(R.id.tv_pass6); initData(); } private void initData(){ if (!TextUtils.isEmpty(mMoney)){ tvMoney.setText(mMoney); } if (!TextUtils.isEmpty(mTitle)){ tvTitle.setText(mTitle); } mPayPassList = new ArrayList<>(); for (int i = 1; i <= 9; i++) { mPayPassList.add(i); } mPayPassList.add(10); mPayPassList.add(0); mPayPassList.add(12); adapter = new PayPassDialogAdapter(mPayPassList, getContext()); mPayPassRecyclerView.setAdapter(adapter); mPayPassRecyclerView.setLayoutManager(new GridLayoutManager(getContext(), 3)); mPayPassRecyclerView.addItemDecoration(new GridSpacingItemDecoration(3, dp2px(1), true)); initListeners(); } private void initListeners(){ ivClose.setOnClickListener(v -> dismiss()); adapter.setOnItemClickListener(position -> { if (position < 9 || position == 10){ if (mPayPass.length() < 6){ mPayPass += mPayPassList.get(position); mPayPassTextViewArray[mPayPass.length() - 1].setText("*"); } if (mPayPass.length() == 6){ if (onFinishPayClickListener != null){ onFinishPayClickListener.onPassFinish(this, mPayPass); } } } else if (position == 11) { if(!mPayPass.isEmpty()){ mPayPassTextViewArray[mPayPass.length()-1].setText("");//去掉界面* mPayPass = mPayPass.substring(0,mPayPass.length()-1);//删除一位 } } }); } public interface OnFinishPayClickListener{ void onPassFinish(PayPasswordDialog dialog, String payPass); } private OnFinishPayClickListener onFinishPayClickListener; public PayPasswordDialog setOnFinishPayClickListener(OnFinishPayClickListener onFinishPayClickListener) { this.onFinishPayClickListener = onFinishPayClickListener; return this; } private int dp2px(int dp) { return (int) (getContext().getResources().getDisplayMetrics().density * dp + 0.5f); } public PayPasswordDialog setMoney(String mMoney) { this.mMoney = mMoney; return this; } public PayPasswordDialog setTitle(String mTitle) { this.mTitle = mTitle; return this; } } public class PayPassDialogAdapter extends RecyclerView.Adapter<PayPassDialogAdapter.ViewHolder> { private final List<Integer> mData; private final Context mContext; public PayPassDialogAdapter(List<Integer> data, Context context) { mData = data; mContext = context; } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item_pay_password, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { Integer integer = mData.get(position); if (integer == 10){ holder.iv_delete.setVisibility(View.GONE); holder.tv_num.setText(""); holder.itemView.setBackgroundColor(Color.parseColor("#E1E5EA")); } else if (integer == 12){ holder.iv_delete.setVisibility(View.VISIBLE); holder.tv_num.setText(""); holder.itemView.setBackgroundColor(Color.parseColor("#E1E5EA")); } else { holder.iv_delete.setVisibility(View.GONE); holder.tv_num.setText(String.valueOf(integer)); } holder.itemView.setOnClickListener(v -> { if (mOnItemClickListener != null){ mOnItemClickListener.onItemClick(position); } }); } public interface OnItemClickListener{ void onItemClick(int position); } private OnItemClickListener mOnItemClickListener; public void setOnItemClickListener(OnItemClickListener onItemClickListener) { mOnItemClickListener = onItemClickListener; } @Override public int getItemCount() { return mData == null ? 0 : mData.size(); } public static class ViewHolder extends RecyclerView.ViewHolder { ImageView iv_delete; TextView tv_num; public ViewHolder(View view) { super(view); iv_delete = view.findViewById(R.id.iv_delete); tv_num = view.findViewById(R.id.tv_num); } } }

源码:

gitee

github

标签:

【Android】安卓付款密码输入框、支付密码输入框由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【Android】安卓付款密码输入框、支付密码输入框

上一篇

下一篇
嵌入式晶振细究