一段时间后关闭一项活动

时间:2013-09-11 10:59:21

标签: android android-activity

我正在尝试制作一个骰子滚动应用程序,我想运行一个活动,当按下按钮时显示结果的图像,并在几秒钟后关闭它。那我怎么能这样做呢?

也许有另一种方法可以在我的活动之上显示图像而无需调用新活动?我不确定。

我读过一些关于计时器的事情,但我并没有真正理解它。而且我知道人们会告诉我让用户轻按以关闭窗口但是对于这个应用程序,我确信我希望它自动消失。

5 个答案:

答案 0 :(得分:4)

你可以用这个:

 Timer t = new Timer();
 t.schedule(new TimerTask() {

        @Override
        public void run() {

                    image.setVisibility(View.GONE);
                    // If you want to call Activity then call from here for 5 seconds it automatically call and your image disappear....
        }
 }, 5000);

答案 1 :(得分:2)

new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {

                    image.setVisibility(View.GONE);
                        }
                }, 1500);

答案 2 :(得分:0)

有很多方法可以解决这个问题。

您可以使用Gone / Invisible的ImageView,稍后当您想要显示它时,可以打开View.Visible的可见性。

你可以有一个计时器。检查Timer,当计时器到期时,您可以使用ImageView完成所需操作。我觉得,您需要在其他活动中添加额外的重载。

答案 3 :(得分:0)

Maybe there's another way to display an image on top of my activity without calling a new activity? I'm not sure.

我认为您也可以使用对话框来显示图像。

I want to run an activity which displays an image of the result when a button is pressed and close it after a few seconds. So how can I do this?

使用CountDownTime Example。然后点击按钮。

  mTimer = new MyTimer(timeToDisplay, interval);
  mTimer.start()

示例代码..

 class MyTimer extends CountDownTimer {

     //constructor for timer class
    public MyTimer(long millisInFuture, long countDownInterval) {
        super(millisInFuture, countDownInterval);

    }


   // this method called when timer is finished
    @Override
    public void onFinish() {

        //close activity or dismiss dialog here 
    }

     //this method is called for every iteration of time interval
    @Override
    public void onTick(long millisUntilFinished) {


    }

}

答案 4 :(得分:0)

点击按钮后尝试此工作,活动将在2秒后完成

button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                v.postDelayed(new Runnable() {

                    @Override
                    public void run() {
                        finish();

                    }
                }, 2000);

            }
        });