【问题标题】:Touchlistener on activity switch from touch doesn't see the touch触摸活动开关上的触摸监听器看不到触摸
【发布时间】:2016-05-05 08:51:45
【问题描述】:

我是 Android 新手,无法弄清楚这一点,也找不到任何可行的解决方案。

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

非常简单的代码

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

}

【问题讨论】:

  • 如果您在第二个活动中没有做任何事情,那么您为什么需要那个?可以直接启动第三次活动...
  • 我正计划在第二个活动中做一些事情,但还没有做到这一点,并且首先尝试在活动之间进行切换。

标签: android ontouchlistener


【解决方案1】:

好的,在 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;
}

【讨论】:

  • 那行不通。我认为 b/c 当视图切换时它会失去焦点,它永远不会收到 ACTION_UP
  • 实际上,再次尝试该代码后,我注意到如果您在 BlueActivity 期间触摸并立即抬起手指,它会工作,然后它会得到一个 ACTION_UP,但如果您触摸并按住然后抬起手指,那么它永远不会收到 ACTION_UP。
猜你喜欢
  • 1970-01-01
  • 2017-05-18
  • 2014-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多