实现点击imageView后弹出提示框,提示框显示兑换成功,提示框要显示读秒倒数,3秒后跳转到页面MainActivity,可以使用 AlertDialog
和 Handler
来完成。
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.view.View;
import android.widget.ImageView;
import androidx.appcompat.app.AppCompatActivity;
public class Certificate extends AppCompatActivity {
private ImageView imageView2;
private int secondsLeft = 3;
private AlertDialog alertDialog;
private Handler handler = new Handler(Looper.getMainLooper());
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_certificate);
imageView2 = findViewById(R.id.imageView65);
imageView2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showSuccessDialog();
}
});
}
private void showSuccessDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("兑换成功,3秒后跳转")
.setCancelable(false);
alertDialog = builder.create();
alertDialog.show();
// Start the countdown
startCountdown();
}
private void startCountdown() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
if (secondsLeft > 0) {
alertDialog.setMessage("兑换成功," + secondsLeft + "秒后跳转");
secondsLeft--;
startCountdown();
} else {
alertDialog.dismiss();
Intent intent = new Intent(Certificate.this, MainActivity.class);
startActivity(intent);
finish(); // Optional: finish the current activity if you don't want to keep it in the back stack
}
}
}, 1000); // 1000 milliseconds delay for each second
}
}
-
全局变量:
secondsLeft
变量用于记录剩余秒数。alertDialog
用于引用当前显示的对话框。handler
用于在主线程上调度任务。
-
showSuccessDialog
方法:- 创建一个不可取消的对话框,初始消息内容为“兑换成功,3秒后跳转”。
- 显示对话框后,调用
startCountdown
开始倒计时。
-
startCountdown
方法:- 使用
Handler
的postDelayed
方法每隔1秒执行一次。 - 每次执行时,更新对话框的消息内容,并递减
secondsLeft
。 - 当
secondsLeft
减至0时,关闭对话框并启动MainActivity
,可选地结束当前活动。
- 使用
用户点击 imageView2
后,会看到一个提示框显示倒计时,从3秒开始,每秒更新一次,直到倒计时结束时自动跳转到 MainActivity
。
效果图: