2014-01-17 35 views
2

我有一個活動在活動B.活動A不填充整個屏幕。(雖然它不是對話活動),我想結束一個活動時,觸摸事件在活動之外檢測到邊界。如何檢測活動邊界之外的觸摸事件?如何檢測活動境外的觸摸事件

@覆蓋

public boolean onTouchEvent(MotionEvent event) { 
    if (event.getAction() == MotionEvent.ACTION_OUTSIDE) { 
     Toast.makeText(getApplicationContext(), "Hi", 3000).show(); 

     return true; 
    } 

    return false; 
} 

此代碼不能正常工作,因爲它僅適用於對話活動。請提前:)

+0

活動A不會填滿整個屏幕(它不是對話框活動)..那麼它是什麼??..你可能沒有使用全屏幕..但它佔據整個..你可以設置x,y如果超過你的限制可以做這樣的操作 – Manmohan

+0

@manmohan一個活動填滿整個屏幕的不必要。 ...我已填充活動,使其顯示爲對話活動 –

+0

U可以採取主題對話框除padding.and以外的活動如果我認爲你的意思,然後告訴可以任何其他活動或別的東西使用剩餘的空間。假設如果觸摸不在活動範圍內,那麼活動將如何獲得它。爲了更清楚你更多Windowmanager獲取所有觸覺事件因爲它是一個實例整個顯示器。 – Manmohan

回答

1

我不知道這是否正常工作,所以請測試它:)
,但它應該是很容易help..Thanks:

在actvity A的onCreate()

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    //set us to non-modal, so that others can receive the outside touch events. 
    getWindow().setFlags(LayoutParams.FLAG_NOT_TOUCH_MODAL, LayoutParams.FLAG_NOT_TOUCH_MODAL); 

    //and watch for outside touch events too 
    getWindow().setFlags(LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH); 

    //be sure to set the content view after setting those flags!! 
    setContentView(R.layout.my_view); 
} 

現在收到的觸摸事件在正常`onTouch()」
只是檢查是否有它的外面(得到x和y,並檢查對你的窗口的位置)

相關問題