倒计时结束后设置可见性

Set Visibility after countdown ends

尽管彻底搜索了其他用户的问题,但我似乎不明白如何做倒数计时器。我想做的就是在 30 秒后不触摸屏幕的情况下将可见性设置为 GONE。到目前为止,我已经这样做了:

public class StatusFragment extends Fragment {
    CountDownTimer countDownTimer;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        countDownTimer = new CountDownTimer(30000, 1000) {

            public void onTick(long millisUntilFinished) {
                          //SET VISIBILITY TO VISIBLE
            }

            public void onFinish() {
                             //SET VISIBILITY TO GONE
            }
        }.start();


        cpHover.setOnClickListener(new OnClickListener() {

            //Should I countDownTimer.start()? It says there's an error
            @Override
            public void onClick(View view) {
                if(textBox.getVisibility()==View.GONE){
                    donutProgress.setVisibility(View.VISIBLE);
                    textBox.setVisibility(View.VISIBLE);
                    image.setVisibility(View.VISIBLE);


                }
                else if(textBox.getVisibility()==View.VISIBLE){
                    donutProgress.setVisibility(View.GONE);
                    textBox.setVisibility(View.GONE);
                    image.setVisibility(View.GONE);
                }
            }
        });

过程应该很简单。在 onCreate() 中设置每次用户单击 cpHover 时开始的 30 秒倒计时。当他们再次点击它时,它应该重新开始倒计时。有两种隐藏 UI 的方法:在屏幕可见时单击屏幕或在 30 秒以上完全不单击。

提前致谢。

将此添加到您的 onCreate()

final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
  @Override
  public void run() {
                //set visibility as gone here
                if(textBox.getVisibility()==View.VISIBLE){
                donutProgress.setVisibility(View.GONE);
                textBox.setVisibility(View.GONE);
                image.setVisibility(View.GONE);
            }
  }
}, 30000);

非常简单,只需按照以下更改代码即可:

countDownTimer = new CountDownTimer(30000, 1000) {

        public void onTick(long millisUntilFinished) {
                      //SET VISIBILITY TO VISIBLE
           donutProgress.setVisibility(View.VISIBLE);
            textBox.setVisibility(View.VISIBLE);
            image.setVisibility(View. VISIBLE);
        }

        public void onFinish() {
                         //SET VISIBILITY TO GONE
            donutProgress.setVisibility(View.GONE);
            textBox.setVisibility(View.GONE);
            image.setVisibility(View.GONE);
        }
        }
    }.start();

你想在点击事件中开始CountDownTimer然后在点击事件中添加上面的代码

快乐编码....

更新您的代码:

     public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);             
                setUpCountDown();
                cpHover.setOnClickListener(new OnClickListener() {

                    //Should I countDownTimer.start()? It says there's an error
                    @Override
                    public void onClick(View view) {
                      if(countDownTimer != null) {
                        countDownTimer.cancel();
                      }
                      setUpCountDown();
                    }
                );
    }
    private void setUpCountDown() {
              countDownTimer = new CountDownTimer(30000, 1000) {

                    public void onTick(long millisUntilFinished) {
                                  //SET VISIBILITY TO VISIBLE
                          donutProgress.setVisibility(View.VISIBLE);
                          textBox.setVisibility(View.VISIBLE);
                          image.setVisibility(View.VISIBLE);
                    }

                    public void onFinish() {

                            donutProgress.setVisibility(View.GONE);
                            textBox.setVisibility(View.GONE);
                            image.setVisibility(View.GONE);

                    }
                }.start();
    }