从触摸切换活动的Touchlistener没有看到触摸

时间:2016-05-05 08:51:45

标签: android ontouchlistener

我是Android新手,无法解决这个问题,也无法找到有效的解决方案。

我有一个我想要的第一个活动,并且当用户从MotionEvent.ACTION_DOWN按下屏幕时成功切换到第二个活动,并且我希望第二个活动在用户抬起手指时立即切换到第三个活动,但是第二次活动的touchlistener没有响应,直到用户抬起手指,再次按下,然后第二次抬起。

非常简单的代码

public class BlueActivity extends AppCompatActivity implements View.OnTouchListener {
RelativeLayout relativeLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_blue);
    relativeLayout = (RelativeLayout) findViewById(R.id.relativeLayout);
    relativeLayout.setOnTouchListener(this);
}

public boolean onTouch(View view, MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        startActivity(new Intent(this, RedActivity.class));
    }
    return true;
}

第二个

public class RedActivity extends AppCompatActivity implements View.OnTouchListener {
RelativeLayout relativeLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_red);
    relativeLayout = (RelativeLayout) findViewById(R.id.relativeLayout2);
    relativeLayout.setOnTouchListener(this);
}

public boolean onTouch(View view, MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_UP) {
        startActivity(new Intent(this, OrangeActivity.class));
    }
    return true;
}

}

1 个答案:

答案 0 :(得分:0)

好的,请在 BlueActivity 中尝试此操作,因为RedActivity的onTouch方法未被调用,因为BlueActivity中的事件仍然在运行,因此尝试将其放入BlueActivity中它将起作用。

public boolean onTouch(View view, MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        startActivity(new Intent(this, RedActivity.class));
    }

 if (event.getAction() == MotionEvent.ACTION_UP) {
       startActivity(new Intent(this, OrangeActivity.class));
    }

    return true;
}