使用PopupWindow实现随机排列的自定义密码键盘

效果图:

MainActivity.java

View keyboardView = LayoutInflater.from(this).inflate(R.layout.random_keyboard, null);Display display = getWindowManager().getDefaultDisplay();int height = (int) getResources().getDimension(R.dimen.height);popupWindow = new PopupWindow(keyboardView, display.getWidth(),height * 4, false);btn0 = (Button) keyboardView.findViewById(R.id.keyboard_btn0);btn1 = (Button) keyboardView.findViewById(R.id.keyboard_btn1);btn2 = (Button) keyboardView.findViewById(R.id.keyboard_btn2);btn3 = (Button) keyboardView.findViewById(R.id.keyboard_btn3);btn4 = (Button) keyboardView.findViewById(R.id.keyboard_btn4);btn5 = (Button) keyboardView.findViewById(R.id.keyboard_btn5);btn6 = (Button) keyboardView.findViewById(R.id.keyboard_btn6);btn7 = (Button) keyboardView.findViewById(R.id.keyboard_btn7);btn8 = (Button) keyboardView.findViewById(R.id.keyboard_btn8);btn9 = (Button) keyboardView.findViewById(R.id.keyboard_btn9);btn_del = (Button) keyboardView.findViewById(R.id.keyboard_btn_del);btn_clear = (Button) keyboardView.findViewById(R.id.keyboard_btn_clear);btn_conf = (Button) keyboardView.findViewById(R.id.keyboard_btn_conf);btn0.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubint index = editText.getSelectionStart();String str = randomKeys[0]+"";editable.insert(index, str);}});btn1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubint index = editText.getSelectionStart();String str = randomKeys[1]+"";editable.insert(index, str);}});btn2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubint index = editText.getSelectionStart();String str = randomKeys[2]+"";editable.insert(index, str);}});btn3.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubint index = editText.getSelectionStart();String str = randomKeys[3]+"";editable.insert(index, str);}});btn4.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubint index = editText.getSelectionStart();String str = randomKeys[4]+"";editable.insert(index, str);}});btn5.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubint index = editText.getSelectionStart();String str = randomKeys[5]+"";editable.insert(index, str);}});btn6.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubint index = editText.getSelectionStart();String str = randomKeys[6]+"";editable.insert(index, str);}});btn7.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubint index = editText.getSelectionStart();String str = randomKeys[7]+"";editable.insert(index, str);}});btn8.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubint index = editText.getSelectionStart();String str = randomKeys[8]+"";editable.insert(index, str);}});btn9.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubint index = editText.getSelectionStart();String str = randomKeys[9]+"";editable.insert(index, str);}});btn_del.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubtry {int index = editText.getSelectionStart();editable.delete(index – 1, index);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}});btn_clear.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubeditable.clear();}});btn_conf.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubpopupWindow.dismiss();button.requestFocus();}});// 禁止EditText获得焦点后弹出系统键盘editText.setInputType(InputType.TYPE_NULL);editText.setOnFocusChangeListener(new OnFocusChangeListener() {@Overridepublic void onFocusChange(View arg0, boolean arg1) {// TODO Auto-generated method stubif (arg1) {updateKeyBoard();popupWindow.showAsDropDown(editText, 0, 0);popupWindow.update();}}});}private void updateKeyBoard() {randomKeys = getRandomNum();btn0.setText(randomKeys[0] + "");btn1.setText(randomKeys[1] + "");btn2.setText(randomKeys[2] + "");btn3.setText(randomKeys[3] + "");btn4.setText(randomKeys[4] + "");btn5.setText(randomKeys[5] + "");btn6.setText(randomKeys[6] + "");btn7.setText(randomKeys[7] + "");btn8.setText(randomKeys[8] + "");btn9.setText(randomKeys[9] + "");}//生成随机的0-9 10个数字,,且值各不相同private int[] getRandomNum() {Random random = new Random();int[] data = new int[10];boolean b;boolean b2 = false;boolean b3 = true;int x;for (int i = 0; i < 10; i++) {b = true;while (b) {x = random.nextInt(10);if (x == 0 && b3) {b3 = false;b = false;}for (int y : data) {if (x == y) {b2 = false;break;} else {b2 = true;}}if (b2) {data[i] = x;b = false;break;}}}return data;}人生最好的旅行,就是你在一个陌生的地方,

使用PopupWindow实现随机排列的自定义密码键盘

相关文章:

你感兴趣的文章:

标签云: