Androidの模倣度の高いWeChat決済パスワード入力制御サンプルコード
この記事では、主にAndroid模倣性の高いWeChat決済パスワード入力制御の具体的な実装コードを誰でも簡単に紹介します。具体的な内容は以下の通りです
WeChatの支払いパスワード制御と同様に、最近のプロジェクトではこの機能が必要なので、この機能を実装する必要があります
古い撮影方法では、この「小さいながらも美しい」コントロールのアイデアは次のようになります
Ⅰ。グリッドビューを使用して入力数字キーボードをシミュレートします。 、画面の下部からポップアップが表示されます
Ⅲ、入力数字キーボードのイベントを監視し、
パスワードボックスに入力番号を入力し、パスワードの長さが指定された場合にイベントコールバックを実行します。マップは次のようになります:
まず、必要に応じてパスワード ボックスを動的にロードする必要があります:for (int i = 0; i <img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/013/2513ff716929a423feac0b80f0d13262-0.jpg" class="lazy" id="theimg" alt="Androidの模倣度の高いWeChat決済パスワード入力制御サンプルコード" style="max-width:90%" style="max-width:90%" title="Androidの模倣度の高いWeChat決済パスワード入力制御サンプルコード"> ここでパスワードの長さを 6 に設定します。そして、これらの 6 つのパスワード ボックス コントロールをブルーミングに追加します。 これらのコントロールの親コントロールに移動し、次の操作を実行できるように、各パスワード入力コントロールをコントロール配列 に配置します <p style="text-align: left;"></p> 次に、グリッドビューを使用して 12- を生成します。正方形のシミュレートされた数値キーボード。シミュレートされたキーボードは次のようになります。 <p style="text-align: left;"><a href="http://www.php.cn/wiki/58.html" target="_blank"></a></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 としてロードし、このデータを追加します。 Populate規則に従って、このシミュレートされたキーボードは、ポップアップ ウィンドウにグリッドビューを接続し、画面からポップアップします。対応するコードは次のとおりです:
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.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView> parent, View view, int position, long id) { if (position = -1 && currentIndex = -1) { // 判断是否删除完毕————要小心数组越界 tvList[currentIndex--].setText(""); } } } } });
ログイン後にコピー
// 设置监听方法,在第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>
ログイン後にコピー
以上がAndroidの模倣度の高いWeChat決済パスワード入力制御サンプルコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最高のグラフィック設定
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
アサシンのクリードシャドウズ:シーシェルリドルソリューション
2週間前
By DDD
R.E.P.O.誰も聞こえない場合はオーディオを修正する方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:Myriseのすべてのロックを解除する方法
4週間前
By 尊渡假赌尊渡假赌尊渡假赌

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7470
15


CakePHP チュートリアル
1377
52


Steamのアカウント名の形式は何ですか
77
11


NYTの接続はヒントと回答です
19
29

