一个按钮,显示按下的时间

时间:2015-01-05 19:08:49

标签: java android button time

我想制作一个按钮,可以告诉我按下多长时间。如果按钮停止按下,时间仍然停留在那里,那么你可以继续按下它。我怎么能这样做?

使用此代码,我按了5秒按钮 - 按下打开一个新活动:)

公共类MainActivity扩展了ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
     Button button1=(Button)findViewById(R.id.button1);
     final Handler handel = new Handler();
        button1.setOnTouchListener(new View.OnTouchListener() {



        public boolean onTouch(View arg0, MotionEvent arg1) {
            switch (arg1.getAction()) {
            case MotionEvent.ACTION_DOWN:
                handel.postDelayed(run, 5000/* OR the amount of time you want */);
                break;

            default:
                handel.removeCallbacks(run);
                break;

            }
            return true;
        }

        Runnable run = new Runnable() {

            @Override
            public void run() {


                Intent i = new Intent(MainActivity.this, SecActivity.class);
                 startActivity(i);

            }
        };});

}}

3 个答案:

答案 0 :(得分:1)

如果你的意思是按钮计数按下的时间,你可以使用:

int count = 0;
   (your button).setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            count++;
        }
    });

如果你的意思是持有它的时间越长,你就可以使用:

long time = 0;
    (your button).setOnTouchListener(new View.OnTouchListener() {

        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
            if(event.getAction() == event.ACTION_DOWN){
                time = System.currentTimeMillis();
            }else if( event.getAcion() == event.ACTION_UP){
                time = System.currentTimeMillis() - time;
            }
            return true;
        }
    });

注意:你的变量如(int count)和(long time)应该在你的类的主体中声明而不是方法;

下面的代码是一个示例代码,用于识别双击自定义时间的视图;

boolean isPressed = false;
long delayed = 1000;
final Hanlder handler = new Handler();
Button b;
b.setOnClickListener(new View.onClickListener(){
    public void onClick(View v){
        if(isPressed == true){
            // recognize double click;
        }else{
        Toast.makeText(getApplicationContext(),"tap again to exit",1).show();
        isPressed = true;
        handler.postDelayed(new Runnable(){
            public void run(){
                isPressed = false;
            }
        },delayed);
    }
});

答案 1 :(得分:0)

尝试使用TouchListener:

Handler handel = new Handler();     b.setOnTouchListener(new View.OnTouchListener(){

    @Override
    public boolean onTouch(View arg0, MotionEvent arg1) {
        switch (arg1.getAction()) {
        case MotionEvent.ACTION_DOWN:
            handel.postDelayed(run, 5000);
            break;

        default:
            handel.removeCallbacks(run);
            break;

        }
        return true;
    }
});

稍后定义run:

Runnable run = new Runnable(){

@Override
public void run() {
    // Your code to run on long click

}

};

答案 2 :(得分:0)

在按下按钮和释放按钮时设置监听器。创建一个在按下按钮后记录的计时器,并在释放按钮时停止。如果您使用JFrame或Android作为GUI,则应该有两个侦听器。