繁体   English   中英

单击按钮时如何设置计时器?

[英]How to set Timer when button clicked?

我的意思是就像秒表一样,当点击按钮时,计时器会打开,直到按下停止按钮

startbutton= (Button)findViewById(R.id.black1);
  startbutton.setOnClickListener(new View.OnClickListener() {

              public void onClick(View v){
              //Start the timer
                                         }                
            });

 stopbutton= (Button)findViewById(R.id.black1);
 stopbutton.setOnClickListener(new View.OnClickListener() {

              public void onClick(View v){
              //Stop the timer
                                         }                
            });

第二个问题,

如果计时器显示 90 秒如何让它在屏幕上显示图像视图或按钮? 就像一些 if 语句使按钮可见,每个计时器计数到 90 秒(90、180、270 等)。他会将按钮可见性设置为可见。

之前谢谢。

在您的xml使用计时器

<Chronometer
        android:id="@+id/chronometer1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Chronometer" />

在你的java

Chronometer focus = (Chronometer) findViewById(R.id.chronometer1);

startButton.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {

        focus.start();
        setVisibilityTimerOn(); //Second Question Solution
    }
});

stopButton.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {

        focus.stop();
        setVisibilityTimerOff();
    }
});

第二个问题如果你想打开/关闭某些按钮/ImageView的可见性设置一个处理程序

//Declare these variable 
private Handler handler;
private Runnable updateView;


private void setVisibilityTimerOn(){
     timeHandler = new Handler(); //it's better if you declare this line in onCreate (becuase if user press stopButton first before pressing startButton error will occur as handler was never initialized and you try calling removeCallback function)
     updateView = new Runnable() {
         public void run() {
              someImageView.setVisibility(View.VISIBLE);
         }
     };
     handler.postDelayed(updateView ,90000);//this will be on after 90 second
}

private void setVisibilityTimerOff(){
    handler.removeCallbacks(updateView);
}

这类似于秒表计时器,间隔为 1 毫秒。

    Handler handler= new Handler();

1. click to start   (code)


  Runnable runnable = new Runnable() {
                       @Override
                       public void run() {
        //put your code to be executed on within every interval
                           handler.postDelayed(this, 1); 
                       }
                    };

        handler.postDelayed(runnable, 5); //start after 5 seconds 

 2. click to stop (code)
     handler.removeCallbacksAndMessages(null); 

它应该工作。 谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM