java - Android 上点击定时器

标签 java android timer

我正在尝试实现一些隐藏菜单。就像 Android 操作系统中的开发者选项一样,您按 10 次就会打开一个 secret 菜单。

我的任务是创建一个 onbutton 单击监听器来触发某种计时器事件。我必须点击该按钮 10 次, secret 菜单才会出现。更重要的是,它应该有 8 秒重置计时器,如果用户在 8 秒内没有按下按钮,则会重置点击次数。我知道它应该在工作线程上完成,但我在寻找此类工作的最佳实践和类时遇到问题。

最佳答案

你可以试试这个,

public class MainActivity extends AppCompatActivity {

    private int clickCount = 0;
    private int maxClick = 10;
    private Toast mToast;
    private long clickDelayTime = 500; // milli second (if you want to set 8 sec then set 8000 instead of 500)
    private CountDownTimer mCountDownTimer = new CountDownTimer(clickDelayTime, clickDelayTime) {
        @Override
        public void onTick(long millisUntilFinished) {

        }

        @Override
        public void onFinish() {
            // set click count to 0 if user stop clicking before timer finish
            clickCount = 0;
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        final TextView tvClick = (TextView) findViewById(R.id.tvClick);
        tvClick.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // increment click count
                clickCount++;
                // cancel previous timer
                mCountDownTimer.cancel();
                // start new timer after next click
                mCountDownTimer.start();

                if (clickCount == maxClick) {
                    // cancel current toast
                    mToast.cancel();
                    Toast.makeText(MainActivity.this, "You have clicked " + clickCount + " times.", Toast.LENGTH_SHORT).show();
                    clickCount = 0;
                    return;
                }

                // create toast is null
                if (mToast == null) {
                    mToast = Toast.makeText(MainActivity.this, "Click " + (maxClick - clickCount) + " more times.", Toast.LENGTH_SHORT);
                } else {
                    // if toast is not null then update message
                    mToast.setText("Click " + (maxClick - clickCount) + " more times.");
                }
                mToast.show();
            }
        });
    }
}

关于java - Android 上点击定时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42019776/

相关文章:

java - 设置 Java Deflater(和 Inflater)输出字节缓冲区的大小

java - 此代码双重检查锁定安全吗?

java - 使用 Guava 根据一个属性过滤列表

ios - 当发现倒计时结束时

javascript - 创建一个倒数计时器(占 SetInterval/Timeout Google Chrome 选项卡 "error")

java - Hibernate 在外键字段中插入空值

android - 在应用程序级别初始化 Fabric 和 Crashlytics 有什么缺点吗?

android - 如何使用 TimePicker,android 选择一秒

Android O Preview findViewById 编译报错

javascript - 在带有主文件的ASP.NET 2.0页面上使用Java Timer