ฉันมีสองกิจกรรม A และ B ฉันต้องการให้เหตุการณ์สัมผัสเดียว MotionEvent.ACTION_DOWN ติดอยู่ใน A ในขณะที่ยังกดค้างไว้ ให้เปิด B จากนั้นให้จับเหตุการณ์การเปิดตัว MotionEvent.ACTION_UP ใน B
ใน A มี View v ที่มี OnTouchListener พร้อมการโทรกลับต่อไปนี้:
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
startActivity(new Intent(A.this, B.class));
break;
case MotionEvent.ACTION_UP:
// not called
break;
}
// false doesn't work either
return true;
}
ใน B มี View v2 ที่ทับซ้อนกัน (เหนือ v ดั้งเดิม) ด้วย OnTouchListener ประเภทเดียวกัน แต่ "onTouch" ของ B ไม่ถูกเรียก เมื่อกิจกรรมเริ่มต้นขึ้นเว้นแต่ฉันจะขยับนิ้ว (สร้างกิจกรรมการสัมผัสใหม่)
พูดง่ายๆ ฉันกำลังสร้างแอปพลิเคชันที่จะทำให้กิจกรรมใหม่ปรากฏขึ้นเมื่อกดบนหน้าจอค้างไว้และสิ้นสุดเมื่อฉันปล่อยนิ้ว
เป็นไปไม่ได้หรือที่จะมีการถ่ายโอนสถานะ MotionEvent.ACTION_DOWNed จากมุมมองหนึ่งไปยังอีกมุมมองหนึ่ง หรือกิจกรรมใหม่ B จะล้าง "ผู้ฟังแบบสัมผัสบนหน้าจอ" ในปัจจุบันที่มีให้เฉพาะ A เนื่องจากเริ่มต้นที่นั่นหรือไม่
ขอขอบคุณสำหรับคำอธิบายว่า MotionEvents เหล่านี้ถูกส่งไปยังกิจกรรมและ/หรือวิธีแก้ปัญหา/แฮ็กปัญหาของฉันอย่างไร