下面的代码应该显示一个对话框,然后根据程序状态执行一些动画(通过调用doseDownCourt()
执行),通过单击确定取消对话框时。AlertDialog在屏幕上持续太长
问题在于,当解除对话框时,对话框不会立即消失 - 当动画正在执行并显示时,它将保持在屏幕上,并且“确定”按钮处于“按下”状态(阴影蓝色) 。对话框保持在屏幕上,直到动画完成。
我试图改变执行命令的顺序,也尝试使用线程使动画等待对话框在开始之前消失,但一直未能获得行为我想要。
任何建议,将不胜感激。谢谢。
AlertDialog.Builder builder = new AlertDialog.Builder(this.getContext());
String message;
Drawable puffle;
Drawable dr;
if (made == true) {
message = "You made it!!!";
dr = getResources().getDrawable(R.drawable.puff_happy);
}
else {
message = "Aw, you missed. Better luck after your next dose!";
dr = getResources().getDrawable(R.drawable.puff_confused);
}
builder.setMessage(message);
Bitmap bitmap = ((BitmapDrawable) dr).getBitmap();
puffle = new BitmapDrawable(Bitmap.createScaledBitmap(bitmap, 200, 200, true));
builder.setTitle(" ");
builder.setIcon(puffle);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
alertDialog.dismiss();
drawAll(); //put ball and shadow back with avatar
doseDownCourt(); //call doseDownCourt in case multiple doses have been taken before a shot for each has been attempted
}
});
alertDialog = builder.create();
alertDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
WindowManager.LayoutParams WMLP = alertDialog.getWindow().getAttributes();
WMLP.y = -300; //y position of dialog box
alertDialog.getWindow().setAttributes(WMLP);
alertDialog.show();
罗尔夫,我想你的代码,它似乎是在做的伎俩,但我得给它一些更没想明白究竟它在做什么,也弄清楚我是否需要Handler,如你所说。非常感谢! – hBrent