Java 安卓按住按钮几秒钟,然后做一些事情

Java 安卓按住按钮几秒钟,然后做一些事情,java,android,Java,Android,我想做一个按钮,当它保持3秒钟的时候,我得到了这个。它确实可以工作,但我想知道它是否是正确的操作方式,我的意思是,我想让所有按钮都以相同的方式设计,整个菜单基于按住x秒,然后继续操作,我想知道它是否不会产生问题,也不会让我的应用程序变慢 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_m

我想做一个按钮,当它保持3秒钟的时候,我得到了这个。它确实可以工作,但我想知道它是否是正确的操作方式,我的意思是,我想让所有按钮都以相同的方式设计,整个菜单基于按住x秒,然后继续操作,我想知道它是否不会产生问题,也不会让我的应用程序变慢

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

    onbutton = (Button)findViewById(R.id.onbutton);
    onbutton.setOnTouchListener(new View.OnTouchListener() {
        private Handler handler;
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            switch(motionEvent.getAction()){
                case MotionEvent.ACTION_DOWN:
                    onbutton.setBackgroundResource(R.drawable.onbuttonshape);
                    handler = new Handler();
                    handler.postDelayed(run,3000);
                    break;
                case MotionEvent.ACTION_UP:
                    onbutton.setBackgroundResource(R.drawable.buttonshape);
                    handler.removeCallbacks(run);
                    break;
            }
            return true;
        }
        Runnable run = new Runnable() {
            @Override
            public void run() {
                Toast.makeText(MainActivity.this, "delayed msg", Toast.LENGTH_SHORT).show();
            }
        };
    });
}

我只想使用方法
setOnLongClickListener()

不要重新发明轮子 Android有一个

setOnLongClickListener()
您可以订阅并检测到您正在寻找的长按


文档是

为什么不直接使用
setOnLongClickListener()
?必须精确到3秒吗?我想这应该在codereview.stackexchange.com上。如何设置3秒的持续时间?我不确定你能不能。我相信这个想法是为了能够修改和设置新闻的实际持续时间。上述情况不允许这样做。如果我错了,请告诉我。
setOnLongClickListener()