3
我有2個片段,共享屏幕。 在兩者中,都有一個正在偵聽TouchEvents的佈局。
當我在第一個片段上啓動TouchEvent,然後將手指移動到第二個片段的頂部時,TouchEvent仍然被第一個接收,而第二個接收不到。
我試過不同的選擇,但沒有成功。它可能是一個解決方案,從該活動處理TouchEvent,然後將其分派到兩個碎片?
歡迎任何線索=)分享片段之間的TouchEvent
我有2個片段,共享屏幕。 在兩者中,都有一個正在偵聽TouchEvents的佈局。
當我在第一個片段上啓動TouchEvent,然後將手指移動到第二個片段的頂部時,TouchEvent仍然被第一個接收,而第二個接收不到。
我試過不同的選擇,但沒有成功。它可能是一個解決方案,從該活動處理TouchEvent,然後將其分派到兩個碎片?
歡迎任何線索=)分享片段之間的TouchEvent
好的!這裏是(非常基本)我如何管理的是:
MyActivity.java:
private ArrayList<MyOnTouchListener> onTouchListeners = new ArrayList<MusicShaker.MyOnTouchListener>(10);
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
for (MyOnTouchListener listener : onTouchListeners) {
listener.onTouch(ev);
}
return super.dispatchTouchEvent(ev);
}
public void registerMyOnTouchListener(MyOnTouchListener listener){
onTouchListeners.add(listener);
}
public interface MyOnTouchListener {
public void onTouch(MotionEvent ev);
}
Fragment1.java:
((MyActivity)getActivity()).registerMyOnTouchListener(new MyActivity.MyOnTouchListener() {
@Override
public void onTouch(MotionEvent ev) {
Log.d("", "Fragment1 got it");
}
});
Fragment2.java:
((MyActivity)getActivity()).registerMyOnTouchListener(new MyActivity.MyOnTouchListener() {
@Override
public void onTouch(MotionEvent ev) {
Log.d("", "Fragment2 got it");
}
});
它的工作原理,但如果有人有更好的解決方案,我總是在聽=)
Edi t:使用此解決方案時要小心,因爲MotionEvent x和y將與rawX和rawY相同(不再轉換爲View的座標)
您使用什麼方法截取TouchEvent?當你攔截觸摸事件時,你回來了什麼?我知道你可以用onInterceptTouchEvent通過返回false來獲得所需的行爲,但這是在視圖之間。沒有想法與片段 –