只要按住按钮,如何执行操作

时间:2013-11-27 10:41:53

标签: android

嗨,谢谢你的帮助。

我需要一个按钮来执行以下行为:

  • 按下按钮时动作开始(在这种情况下视图滚动)

  • 只要按住按钮,操作就会继续(视图继续滚动)

  • 释放按钮时,动作(滚动)停止。

我试过这个,但是不起作用:

Button left = (Button) findViewById(R.id.left);


    left.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            Log.e("","left");
            return false;
        }
    });

6 个答案:

答案 0 :(得分:5)

我认为您正在寻找OnTouchListenerMotionEvent.ACTION_DOWN

的组合

修改

    switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                // TODO start scroll
                break;
            case MotionEvent.ACTION_UP:
                // TODO stop scroll
                break;
            default:
                break;
            }
            return false;

希望这会有所帮助.. :)

答案 1 :(得分:5)

使用MotionEvent.ACTION_DOWNMotionEvent.ACTION_UP来检测操作以及向下

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            //start action here
            break;


        }
        return super.onTouchEvent(event);
    }

答案 2 :(得分:3)

Button button = (Button) findViewById(R.id.button);
button.setOnTouchListener(new View.OnTouchListener() {

@Override public boolean onTouch(View v, MotionEvent event) {
    switch(event.getAction()) {
    case MotionEvent.ACTION_DOWN:
 //Start your work
        break;
    case MotionEvent.ACTION_UP:
 // stop the work
        break;
   case MotionEvent.ACTION_CANCEL:
 // stop the work
        break;
    }
    return false;
}



});

答案 3 :(得分:1)

默认情况下,你可以使用onlongclick监听器,但在你的情况下,它的最大时间不会生效1-2秒,所以在按钮上应用运动事件并应用你的逻辑..

答案 4 :(得分:1)

您可以使用MotionEvent.ACTION_DOWNMotionEvent.ACTION_UP来检测上下行动

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            //start action
            break;

        case MotionEvent.ACTION_UP:
            //stop action
            break;
        }
        return super.onTouchEvent(event);
    }

答案 5 :(得分:1)

制作新的滚动视图

ScrollView sv=new ScrollView(this);

当您单击/开始按钮时。然后启动增加int值并滚动的线程,然后按下键操作。停止线程。

//start thread which incrment value one by one 
sv.scrollBy(x, y); //x  the amount of pixels to scroll by horizontally 
           //y  the amount of pixels to scroll by vertically