自定义Dialog+OnKeyListener
在FirstActivity中,点击button后,弹出一个输入密码对话框,在CustomDialog 这边实现按键输入,并判断输入的密码是否正确!
问题:怎样让CustomDialog这边无论输入密码正确与否,都要返回一个值给FirstActivity这边,因为FirstActivity这样要根据返回值来判断是否继续执行下面的函数。
CustomDialog.java
FirstActivity.java:
问题:怎样让CustomDialog这边无论输入密码正确与否,都要返回一个值给FirstActivity这边,因为FirstActivity这样要根据返回值来判断是否继续执行下面的函数。
CustomDialog.java
public class CustomDialog extends Dialog implements Constants{
private Context mContext;
private int iDoWhat;
private LayoutInflater mInflater;
private View passwordView;
private Dialog passwordDialog;
private int passwordValue;
private StringBuffer strBufferPassword;
private boolean bReturn = false;
private ImageView passNormalImage1;
private ImageView passNormalImage2;
private ImageView passNormalImage3;
private ImageView passNormalImage4;
private dbaseManager dbase;
private BOX_INFO_STRUCT stBoxInfo;
public CustomDialog(Context context)
{
super(context);
this.mContext = context;
this.mInflater = LayoutInflater.from(mContext);
strBufferPassword = new StringBuffer();
setView();
initDialog();
}
private void setView()
{
passwordView = mInflater.inflate(R.layout.input_password_layout, null);
passNormalImage1 = (ImageView) passwordView.findViewById(R.id.pass_normal1_id);
passNormalImage2 = (ImageView) passwordView.findViewById(R.id.pass_normal2_id);
passNormalImage3 = (ImageView) passwordView.findViewById(R.id.pass_normal3_id);
passNormalImage4 = (ImageView) passwordView.findViewById(R.id.pass_normal4_id);
}
private void initDialog()
{
passwordDialog = new Dialog(mContext, R.style.Theme_password);
Window dialogWindow = passwordDialog.getWindow();
dialogWindow.setGravity(Gravity.CENTER_VERTICAL);
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
// params.width = LayoutParams.MATCH_PARENT;
// params.height = LayoutParams.MATCH_PARENT;
passwordDialog.setCancelable(true);
passwordDialog.setCanceledOnTouchOutside(false);
passwordDialog.addContentView(passwordView, params);
}
public void show()
{
passwordDialog.show();
passwordDialog.setOnKeyListener(inputPassword);
}
private OnKeyListener inputPassword = new OnKeyListener() {
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event)
{
if (event.getAction() == KeyEvent.ACTION_DOWN)
{
switch (keyCode) {
case KEY_0:
// System.out.println("It's 0");
SetImageAlpha(0);
break;
case KEY_1:
// System.out.println("It's 1");
SetImageAlpha(1);
break;
case KEY_2:
// System.out.println("It's 2");
SetImageAlpha(2);
break;
case KEY_3:
// System.out.println("It's 3");
SetImageAlpha(3);
break;
case KEY_4:
// System.out.println("It's 4");
SetImageAlpha(4);
break;
case KEY_5:
// System.out.println("It's 5");
SetImageAlpha(5);
break;
case KEY_6:
// System.out.println("It's 6");
SetImageAlpha(6);
break;
case KEY_7:
// System.out.println("It's 7");
SetImageAlpha(7);
break;
case KEY_8:
// System.out.println("It's 8");
SetImageAlpha(8);
break;
case KEY_9:
// System.out.println("It's 9");
SetImageAlpha(9);
break;
case KEY_EXIT:
passwordValue = 0;
strBufferPassword.setLength(0);
// System.out.println("Now after Key back the strBufferPassword is " + strBufferPassword);
passwordDialog.dismiss();
return true;
default:
break;
}
}
return false;
}};
private boolean SetImageAlpha(int KeyCode) {
System.out.println("your input number is " + KeyCode);
if(0 <= passwordValue && passwordValue < 4)
{
strBufferPassword.append(String.valueOf(KeyCode));
switch(passwordValue){
case 0:
passNormalImage1.setAlpha(0);
break;
case 1:
passNormalImage2.setAlpha(0);
break;
case 2:
passNormalImage3.setAlpha(0);
break;
case 3:
passNormalImage4.setAlpha(0);
break;
default:
break;
}
if(3 == passwordValue)
{
System.out.println("After input finished : "+strBufferPassword);
if(strBufferPassword.toString().equals("1234"))
{
// bReturn = true;
passwordDialog.dismiss();
System.out.println("Congratulation!Pass!");
return true;
}
else{
bReturn = false;
strBufferPassword.setLength(0);
System.out.println("Now after setLength() the strBufferPassword is " + strBufferPassword);
passwordValue = 0;
passNormalImage1.setAlpha(255);
passNormalImage2.setAlpha(255);
passNormalImage3.setAlpha(255);
passNormalImage4.setAlpha(255);
}
}
else
{
passwordValue ++;
}
}
return false;
}
}
FirstActivity.java:
private Button myBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myBtn = (Button) findViewById(R.id.myBtn_id);
myBtn.setOnClickListener(passwordListner);
}
private OnClickListener passwordListner = new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
customDialog = new CustomDialog(FirstActivity.this);
customDialog.show();
//通过判断返回值,再执行下面函数,问题是怎么让那边输入完密码后,返回一个值
//...
}
};
...全文
相关推荐
自定义Dialog样式+大小+位置
自定义Dialog样式+大小+位置
Android自定义Dialog弹窗提示
Android开发自定义的Dialog弹窗提示,ke自定义样式、标题、内容......
各种自定义Dialog 以及Dialog加载动画
自定义对话框样式,以及对话框的加载动画,告别Android默认丑陋的对话框!
android 自定义Dialog提示+动画效果
一个可以直接使用的自定义AlertDialog,封装的很完整的一个Demo,可以灵活使用,里面提示图标还额外添加了动画效果,希望可以帮到大家。
Android自定义Dialog多选对话框(Dialog+Listview+CheckBox)
项目中需要有个Dialog全选对话框,点击全选全部选中,取消全选全部取消。下午查了些资料,重写了一下Dialog对话框。把代码放出来。


