我是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;
}
}
答案 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;
}