java - Android 按住按钮几秒钟然后做一些事情

标签 java android

我想制作一个按钮,当按住 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()

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

文档是 here

关于java - Android 按住按钮几秒钟然后做一些事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41131104/

相关文章:

java - 是否可以在没有两个循环的情况下遍历二维数组?

android - 在 FirebaseRecyclerAdapter 上应用过滤器

javascript - Android WebView Javascript 未启用

android - Firebase 存储 java.util.concurrent.RejectedExecutionException

java - Pyjnius 自定义 java 方法返回 'JavaException: Unable to find a None Method' 在 Public Static 之后工作

java - 调用 entityManager.getTransaction() 时出现 EJBException

java - 使用 orika 从多个源映射到目的地

Java - 我的文件无法读取,我无法弄清楚这一点

Java - 如何在字符串中的 "\\"或 "("前面添加 ")"

java - 应用程序在 Intent Activity 之前意外转移到主要 Activity