Android 如何在按住按钮的情况下执行操作

Android 如何在按住按钮的情况下执行操作,android,Android,你好,谢谢你的帮助 我需要一个按钮来执行以下行为: 按下按钮时,操作开始(在这种情况下,视图滚动) 只要按下按钮,操作就会继续(视图继续滚动) 松开按钮后,操作(滚动)停止 我尝试过这个,但不起作用: Button left = (Button) findViewById(R.id.left); left.setOnTouchListener(new OnTouchListener() { @Override public boolean onT

你好,谢谢你的帮助

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

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

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

  • 松开按钮后,操作(滚动)停止

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

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


    left.setOnTouchListener(new OnTouchListener() {

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

我认为您正在寻找和的组合

编辑:

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

希望这有帮助:)

默认情况下,您可以使用onlongclick listener,但在您的情况下,它的最长时间为1-2秒,因此,在按钮上应用运动事件并应用您的逻辑。

您可以使用
MotionEvent.ACTION\u DOWN
MotionEvent.ACTION\u UP
来检测上下动作

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;
}



});
    @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);
    }
创建新的滚动视图

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

使用
MotionEvent.ACTION\u DOWN
MotionEvent.ACTION\u UP
检测动作向上和向下

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


        }
        return super.onTouchEvent(event);
    }

谢谢,这很有效。然而,我也在努力点击按钮,你知道该怎么做吗?