android-使用PopupWindow实现随机排列的自定义密码键盘
来源:互联网 发布:autocad2011软件下载 编辑:程序博客网 时间:2024/06/05 02:51
效果图:
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;}
keyboard_bg_big.xml
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_pressed="true" android:drawable="@drawable/key11"/> <item android:state_focused="true" android:drawable="@drawable/key12"/> <item android:state_focused="false" android:state_pressed="false" android:drawable="@drawable/keyboard_key_style" /> </selector>
keyboard_bg_small.xml
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_pressed="true" android:drawable="@drawable/key11"/> <item android:state_focused="true" android:drawable="@drawable/key12"/> <item android:state_focused="false" android:state_pressed="false" android:drawable="@drawable/keyboard_key_style" /> </selector>
keyboard_bg_style.xml
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <gradient android:angle="90.0" android:endColor="#ffffff" android:startColor="#ffffff" /> <corners android:bottomLeftRadius="6.0dip" android:bottomRightRadius="6.0dip" android:topLeftRadius="6.0dip" android:topRightRadius="6.0dip" /></shape>
keyboard_key_style.xml
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <size android:height="36.0dip" android:width="80.0dip" /> <gradient android:angle="90.0" android:endColor="#D7D7D7" android:startColor="#D7D7D7" /> <corners android:bottomLeftRadius="6.0dip" android:bottomRightRadius="6.0dip" android:topLeftRadius="6.0dip" android:topRightRadius="6.0dip" /></shape>
random_keyboard.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/keyboard_bg_style" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="3dp" android:layout_marginRight="3dp" android:layout_marginTop="3dp" android:orientation="horizontal" > <Button android:id="@+id/keyboard_btn1" android:layout_width="fill_parent" android:layout_height="55dp" android:layout_weight="1" android:background="@drawable/keyboard_bg_small" android:gravity="center_horizontal|center_vertical" android:text="1" android:textSize="20dp" /> <Button android:id="@+id/keyboard_btn2" android:layout_width="fill_parent" android:layout_height="55dp" android:layout_marginLeft="3dp" android:layout_weight="1" android:background="@drawable/keyboard_bg_small" android:gravity="center_horizontal|center_vertical" android:text="2" android:textSize="20dp" /> <Button android:id="@+id/keyboard_btn3" android:layout_width="fill_parent" android:layout_height="55dp" android:layout_marginLeft="3dp" android:layout_weight="1" android:background="@drawable/keyboard_bg_small" android:gravity="center_horizontal|center_vertical" android:text="3" android:textSize="20dp" /> <Button android:id="@+id/keyboard_btn9" android:layout_width="fill_parent" android:layout_height="55dp" android:layout_marginLeft="3dp" android:layout_weight="1" android:background="@drawable/keyboard_bg_small" android:gravity="center_horizontal|center_vertical" android:text="." android:textSize="20dp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="3dp" android:layout_marginRight="3dp" android:layout_marginTop="3dp" android:orientation="horizontal" > <Button android:id="@+id/keyboard_btn4" android:layout_width="fill_parent" android:layout_height="55dp" android:layout_weight="1" android:background="@drawable/keyboard_bg_small" android:gravity="center_horizontal|center_vertical" android:text="4" android:textSize="20dp" /> <Button android:id="@+id/keyboard_btn5" android:layout_width="fill_parent" android:layout_height="55dp" android:layout_marginLeft="3dp" android:layout_weight="1" android:background="@drawable/keyboard_bg_small" android:gravity="center_horizontal|center_vertical" android:text="5" android:textSize="20dp" /> <Button android:id="@+id/keyboard_btn6" android:layout_width="fill_parent" android:layout_height="55dp" android:layout_marginLeft="3dp" android:layout_weight="1" android:background="@drawable/keyboard_bg_small" android:gravity="center_horizontal|center_vertical" android:text="6" android:textSize="20dp" /> <Button android:id="@+id/keyboard_btn0" android:layout_width="fill_parent" android:layout_height="55dp" android:layout_marginLeft="3dp" android:layout_weight="1" android:background="@drawable/keyboard_bg_small" android:gravity="center_horizontal|center_vertical" android:text="0" android:textSize="20dp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="3dp" android:layout_marginRight="3dp" android:layout_marginTop="3dp" android:orientation="horizontal" > <Button android:id="@+id/keyboard_btn7" android:layout_width="fill_parent" android:layout_height="55dp" android:layout_weight="3" android:background="@drawable/keyboard_bg_small" android:gravity="center_horizontal|center_vertical" android:text="7" android:textSize="20dp" /> <Button android:id="@+id/keyboard_btn8" android:layout_width="fill_parent" android:layout_height="55dp" android:layout_marginLeft="3dp" android:layout_weight="3" android:background="@drawable/keyboard_bg_small" android:gravity="center_horizontal|center_vertical" android:text="8" android:textSize="20dp" /> <Button android:id="@+id/keyboard_btn_del" android:layout_width="fill_parent" android:layout_height="55dp" android:layout_marginLeft="3dp" android:layout_weight="2" android:background="@drawable/keyboard_bg_small" android:gravity="center_horizontal|center_vertical" android:text="删除" android:textSize="20dp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="3dp" android:layout_marginLeft="3dp" android:layout_marginRight="3dp" android:layout_marginTop="3dp" android:orientation="horizontal" > <Button android:id="@+id/keyboard_btn_clear" android:layout_width="fill_parent" android:layout_height="55dp" android:layout_weight="1" android:background="@drawable/keyboard_bg_big" android:gravity="center_horizontal|center_vertical" android:text="清空" android:textSize="20dp" /> <Button android:id="@+id/keyboard_btn_conf" android:layout_width="fill_parent" android:layout_height="55dp" android:layout_marginLeft="3dp" android:layout_weight="1" android:background="@drawable/keyboard_bg_big" android:gravity="center_horizontal|center_vertical" android:text="确定" android:textSize="20dp" /> </LinearLayout></LinearLayout>
源码下载:http://download.csdn.net/detail/centralperk/5075724
- android-使用PopupWindow实现随机排列的自定义密码键盘
- android-使用PopupWindow实现随机排列的自定义密码键盘
- Android的自定义Menu使用PopupWindow实现
- android 自定义菜单 使用PopupWindow实现菜单的各种效果
- 实现键盘数字0-9的随机排列
- 使用spring+html5实现安全传输随机数字密码键盘
- Android自定义密码键盘
- Android自定义密码键盘
- android自定义密码键盘
- android自定义密码键盘
- android自定义密码键盘
- Android 自定义密码键盘
- 使用PopupWindow实现的自定义下拉列表
- android 自定义键盘的实现
- 自定义键盘使用popupwindow弹出问题
- 自定义PopupWindow的实现
- 自定义PopupWindow的使用
- Android自定义数字密码键盘
- MonoDevelop几个常用的快捷键
- http://www.cnblogs.com/hnrainll/archive/2011/06/01/2067359.html
- 毕业设计(十六)---发表文章(2)之- ckeditor 添加自定义表情
- songs
- Spring 整合 Redis
- android-使用PopupWindow实现随机排列的自定义密码键盘
- CGI和BOA使用期间遇到的问题汇总(转)
- J2EE & MVC
- Struts1jar包问题 DispatchAction类
- python:初步搞懂了twisted
- 嵌入式WEB服务器BOA和CGI
- 汉语获取拼音
- BCL-1339:链表基础练习题(1)
- ECSHOP数据库存储时出现乱码的解决办法