1 import android.app.Activity; 2 import android.os.Bundle; 3 import android.text.TextUtils; 4 import android.view.View; 5 import android.widget.Button; 6 import android.widget.CheckBox; 7 import android.widget.CompoundButton; 8 import android.widget.EditText; 9 import android.widget.TextView; 10 import android.widget.Toast; 11 12 import com.sowsceo.rnadomsows.randomsows.R; 13 14 import java.util.ArrayList; 15 import java.util.Collections; 16 import java.util.List; 17 import java.util.Random; 18 19 public class NumberActivity extends Activity { 20 21 private CheckBox checkBoxNumber, checkBoxEnglish, checkBoxCharacter; 22 23 /** 24 * 有限的,让用户输入产生随机数的长度 25 */ 26 private Button bt_definite; 27 private EditText et_lengthVariable; 28 29 /** 30 * 长度不定,产生随机数 31 */ 32 private Produce produce; 33 private MultipleSelectionButtons multipleChecked; 34 private Random random; 35 36 /** 37 * 传递数字的长度 38 */ 39 private int numberLength; 40 41 /** 42 * 000: 从左到右算,第一个是数字、第二个是字母,第三个是特殊字符 43 *44 * 0:表示没有选中 45 * 1:表示选中 46 *
47 * 例如:101:在产生随机数据中,数据由数字和特殊字符组成, 48 * 但是数字或特殊字符的数量不小于1个,不达到总长度 49 *
50 * 001:在产生随机数据中,数据全部由字母组成 51 *
52 * 总长度:如果要产生9个长度的随机数据,总长度就是9个。 53 */ 54 private int[] identifier = {0, 0, 0}; 55 56 @Override 57 protected void onCreate(Bundle savedInstanceState) { 58 super.onCreate(savedInstanceState); 59 setContentView(R.layout.activity_number); 60 61 random = new Random(); 62 63 //组件的初始化 64 init(); 65 66 //给组件提供监控事件 67 monitor(); 68 } 69 70 private void monitor() { 71 checkBoxNumber.setOnCheckedChangeListener(multipleChecked); 72 checkBoxEnglish.setOnCheckedChangeListener(multipleChecked); 73 checkBoxCharacter.setOnCheckedChangeListener(multipleChecked); 74 75 } 76 77 /** 78 * 初始化组件、方法、变量 79 */ 80 private void init() { 81 checkBoxNumber = (CheckBox) findViewById(R.id.checkBoxNumber); 82 checkBoxEnglish = (CheckBox) findViewById(R.id.checkBoxEnglish); 83 checkBoxCharacter = (CheckBox) findViewById(R.id.checkBoxCharacter); 84 et_lengthVariable = (EditText) findViewById(R.id.et_lengthVariable); 85 checkBox_capital = (CheckBox) findViewById(R.id.checkBox_capital); 86 checkBox_lowercase = (CheckBox) findViewById(R.id.checkBox_lowercase); 87 88 tv_Display = (TextView) findViewById(R.id.tv_Number); 89 90 produce = new Produce(); 91 multipleChecked = new MultipleSelectionButtons(); 92 } 93 94 public class Produce implements View.OnClickListener { 95 96 int number; 97 98 String strNumber; 99 100 StringBuffer sb = new StringBuffer();101 102 @Override103 public void onClick(View view) {104 switch (view.getId()) {105 case R.id.bt_Number6:106 numberLength = 6;107 break;108 case R.id.bt_Number9:109 numberLength = 9;110 break;111 case R.id.bt_Number12:112 numberLength = 12;113 break;114 case R.id.bt_Number15:115 numberLength = 15;116 break;117 case R.id.bt_definite:118 String strLength = et_lengthVariable.getText().toString().trim();119 120 if (TextUtils.isEmpty(strLength)) {121 Toast.makeText(NumberActivity.this, "输入值不能为空", Toast.LENGTH_SHORT).show();122 } else {123 numberLength = Integer.parseInt(strLength);124 if (numberLength < 1 || numberLength > 50) {125 Toast.makeText(NumberActivity.this, "数字的长度只能是从1到50", Toast.LENGTH_SHORT).show();126 numberLength = 0;127 }128 }129 break;130 }131 132 String str = String.valueOf(identifier[0] * 100 + identifier[1] * 10 + identifier[2]);133 134 /**135 * 由于手机的性能原因,需要限制一次产生的随机数据的大小136 */137 for (int i = 0; i < numberLength; i++) {138 switch (str) {139 case "100":140 strNumber = String.valueOf(random.nextInt(10));141 break;142 case "110":143 144 break;145 case "101":146 break;147 case "111":148 break;149 case "010":150 byte b=65;151 String s=String.valueOf((char) b);152 System.out.println(s);153 break;154 case "011":155 break;156 case "001":157 break;158 case "000":159 Toast.makeText(NumberActivity.this, "请最少选择一个", Toast.LENGTH_SHORT).show();160 break;161 }162 sb.append(strNumber);163 }164 165 tv_Display.setText(sb.append(strNumber));166 sb = new StringBuffer("\n");167 }168 }169 170 /**171 * identifier[]:数组有三个数,第一位表示 数字,第二位表示 字母,第三位 特殊字符172 *173 * 多选按钮的监听事件174 * CompoundButton compoundButton 判断是哪个多选按钮175 * boolean isChecked 多选按钮的176 */177 public class MultipleSelectionButtons implements CompoundButton.OnCheckedChangeListener {178 @Override179 public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {180 switch (compoundButton.getId()) {181 case R.id.checkBoxNumber:182 if (isChecked)183 identifier[0] = 1;184 else185 identifier[0] = 0;186 break;187 case R.id.checkBoxEnglish:188 if (isChecked)189 identifier[1] = 1;190 else191 identifier[1] = 0;192 break;193 case R.id.checkBoxCharacter:194 if (isChecked)195 identifier[2] = 1;196 else197 identifier[2] = 0;198 break;199 }200 }201 }202 }203