【问题标题】:Android Button Push安卓按钮推送
【发布时间】:2014-11-01 15:00:23
【问题描述】:

我正在构建一个带有紧急警报按钮的应用程序。我想在按住按钮 3 秒钟后显示一条 toast 消息,所以如果有人误按它,它不会发送,但我不知道该怎么做。

public long startTime = 0;

Button btn = (Button)findViewById(R.id.btnAlert);

       btn.setOnTouchListener(new View.OnTouchListener(){
            @Override
            public boolean onTouch(View v, MotionEvent event){
                if(event.getAction() == MotionEvent.ACTION_UP){
                    if((System.currentTimeMillis()- startTime)> 3000){
                        Toast.makeText(getApplicationContext(), "Alert Received! Emergency Services Will Arrive At Your Location Shortly", Toast.LENGTH_LONG).show();
                    }
                    return true;
                }
                if(event.getAction() == MotionEvent.ACTION_DOWN){
                    startTime = System.currentTimeMillis();
                    return true;
                }
                return false;
            }
        });

【问题讨论】:

标签: android eclipse button time onclick


【解决方案1】:

通过 onTouchEvent 来实现。您可以为每个视图添加一个 onTouchListener()。当您收到 ACTION_DOWN 事件时,您将读取实际时间并将其存储在 startTime 变量中。然后,如果您收到 ACTION_UP 事件,您将通过 startTime 减去实际时间。如果 startTime 和实际时间之间的时间大于 3000 毫秒,您将显示 Toast 消息。我现在无法测试以下代码,但它应该可以工作。

public long startTime = 0;

button.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {

        if(event.getAction() == MotionEvent.ACTION_UP){
            if((System.currentTimeMillis() - startTime) > 3000) {
                //show toast message
            }
            return true;
        }
        if(event.getAction() == MotionEvent.ACTION_DOWN){
            startTime = System.currentTimeMillis();
            return true;
        }
        return false;
        }
});

【讨论】:

  • 当我现在测试应用程序时,按钮不会响应点击/触摸
  • 得到这个错误 "ie/itsligo/medi_cation/Main$1#onTouch 应该在检测到点击时调用 View#performClick"
  • 我添加了 performClick 事件,但该按钮仍处于禁用状态。我将代码放在 ACTION_UP 事件之后我不确定那是否正确?
  • 下面是什么意思:按钮仍然被禁用?如果您对按钮使用其他东西,即:带有背景的经典视图,那么您必须将此选项添加到 XML android:clickable="true"。 stackoverflow.com/questions/11700975/…
猜你喜欢
  • 2017-12-01
  • 2013-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多