본 글에서는 주로 Android모조가 많은 WeChat 결제 비밀번호 입력에 대해 자세히 소개합니다. 구체적인 구현 컨트롤 코드는 참고용입니다.
위챗 결제 비밀번호 컨트롤과 마찬가지로 최근 앱에서 이 기능이 필요해서 구현했습니다.
평소에는 촬영할 때 올바른 각도를 찾아야 하지만 이제 이 "작지만 아름다운" 제어를 위해서는 우리의 생각이 이렇습니다.
Ⅰ. 입력할 비밀번호 개수는 코드를 통해 동적으로 불러옵니다.
Ⅱ. Gridview를 사용하여 입력 숫자 키보드를 시뮬레이션하고, 평소와 같이 화면 하단에서 팝업합니다. >Ⅲ. 입력된 숫자 키보드를 모니터링하여 입력된 숫자를 이
비밀번호 상자에 입력하고, 동일한 길이의 비밀번호를 입력하면 이벤트 콜백을 수행합니다. 지도는 다음과 같아야 합니다.
우선 필요에 따라 비밀번호 상자를 동적으로 로드해야 합니다. 해당 코드는 다음과 같습니다.
for (int i = 0; i <p style="text-align: left;">여기서 비밀번호 길이를 6으로 설정하고 6개의 비밀번호 상자 컨트롤을 추가하여 이러한 컨트롤을 유지합니다. 상위 컨트롤로 이동하면 각 비밀번호 컨트롤에 별도의 컨트롤이 있고 각 비밀번호 입력 컨트롤을 해당 컨트롤에 넣습니다. </p> 배열 <p style="text-align: left;"> 그런 다음 Gridview를 사용하여 12각형의 시뮬레이션된 숫자 키보드를 생성하므로 시뮬레이션된 키보드는 다음과 같습니다. <a href="http://www.php.cn/wiki/58.html" target="_blank"></a></p><p style="text-align: left;"></p>소스 코드는 다음과 같아야 합니다. <p style="text-align: left;"></p><pre class="brush:php;toolbar:false"> /** * 加载数据的代码 */ private void initData() { /* 初始化按钮上应该显示的数字 */ for (int i = 1; i map = new HashMap<string>(); if (i parent, View view, int position, long id) { if (position = -1 && currentIndex = -1) { // 判断是否删除完毕————要小心数组越界 tvList[currentIndex--].setText(""); } } } } }); } /** * GrideView的适配器 */ BaseAdapter adapter = new BaseAdapter() { @Override public int getCount() { return valueList.size(); } @Override public Object getItem(int position) { return valueList.get(position); } @Override public long getItemId(int position) { return position; } @SuppressWarnings("deprecation") @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView == null) { convertView = View.inflate(context, R.layout.item_gride, null); viewHolder = new ViewHolder(); viewHolder.btnKey = (TextView) convertView .findViewById(R.id.btn_keys); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } viewHolder.btnKey.setText(valueList.get(position).get("name")); if (position == 9||position==11) { viewHolder.btnKey.setBackgroundDrawable(Utils.getStateListDrawable(context)); viewHolder.btnKey.setEnabled(false); } if (position == 11) { viewHolder.btnKey.setBackgroundDrawable(Utils.getStateListDrawable(context)); } return convertView; } }; /** * 存放控件 */ public final class ViewHolder { public TextView btnKey; }</string>시뮬레이트된 키보드의 데이터를 0-9 및 x로 로드한 다음 이 데이터를 어댑터를 통해 Gridview 컨트롤에 채웁니다. 키보드는 화면 하단에서 그려야 합니다. 여기서 하는 작업은 팝업 창에 Gridview를 연결한 다음 화면 하단에서 팝업하는 것입니다.
View contentView = LayoutInflater.from(context).inflate( R.layout.layout_popupdemo, null);// 定义后退弹出框 gridView = (GridView) contentView.findViewById(R.id.gv_keybord);// 泡泡窗口的布局 popupWindow = new PopupWindow(contentView, ViewGroup.LayoutParams.MATCH_PARENT,// width ViewGroup.LayoutParams.WRAP_CONTENT);// higth popupWindow.setFocusable(false); popupWindow.setAnimationStyle(R.style.animation); //从底部弹出 public void show() { popupWindow.showAtLocation(rl_bottom, Gravity.BOTTOM, 0, 0); // 确定在界面中出现的位置 } @Override public void onWindowFocusChanged(boolean hasWindowFocus) { super.onWindowFocusChanged(hasWindowFocus); show(); }
이 컨트롤이 로드되면 팝업이 나타납니다. >
마지막으로 우리가 해야 할 일은 시뮬레이션된 키보드를 모니터링하고 이 시뮬레이션된 키보드의 입력을 비밀번호 상자에 입력하는 것입니다. , 실제로는 Gridview의 onitemclick 이벤트를 모니터링하기 위한 것입니다.
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView> parent, View view, int position, long id) { if (position = -1 && currentIndex = -1) { // 判断是否删除完毕————要小心数组越界 tvList[currentIndex--].setText(""); } } } } });사용자가 0~9의 숫자를 클릭하면 비밀번호 상자에 채워집니다. 사용자가 백스페이스 키를 클릭하면 해당 비밀번호 상자의 내용이 삭제됩니다. 참고로, 위에서 사용한 텍스트 상자 배열 목록이 전송됩니다. 여기에서 코드를 사용하여 스타일을 설정하세요.
// 设置监听方法,在第6位输入完成后触发 public void setOnFinishInput(final OnPasswordInputFinish pass) { tvList[5].addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { if (s.toString().length() == 1) { strPassword = ""; // 每次触发都要先将strPassword置空,再重新获取,避免由于输入删除再输入造成混乱 for (int i = 0; i 수많은 노력 끝에 최종 결과는 다음과 같습니다. <p style="text-align: left;"></p> <p style="text-align: left;"></p>
위 내용은 안드로이드 고도모조 WeChat 결제 비밀번호 입력 제어 예시 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!