2014-01-17 2 views
2

액티비티 A가 전체 화면을 채우지 않습니다. (대화 상자 액티비티가 아님) 터치 이벤트가있을 때 액티비티 A를 닫으려고합니다. 액티비티 A 경계 외부에서 탐지되었습니다. 액티비티 경계 외부에서 터치 이벤트를 감지하는 방법?액티비티 경계 외부에서 터치 이벤트를 감지하는 방법

는 대화 활동에만 작동하기 때문에이 코드는 작동하지 않습니다

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

     return true; 
    } 

    return false; 
} 

@Override. 사전 : 나는이 작동하는지 그래서 :)
을 테스트 해 있지만, 꽤 쉽게해야, 잘 모릅니다

+0

활동 A는 전체 화면을 채우지 못합니다 (대화 상자 활동이 아님). 그렇다면 무엇입니까? ... 전체 화면을 사용하지 않을 수도 있지만 전체를 차지하지는 않습니다. x, y를 설정할 수 있습니다. 제한을 초과하는 경우 해당 작업을 수행 할 수 있습니다. – Manmohan

+0

@manmohan 작업이 전체 화면을 채우지 않아도됩니다. ... 나는 활동을 패딩하여 대화 활동으로 표시되도록했습니다. –

+0

U는 padding.and 외의 다른 활동을위한 테마 대화 상자를 사용할 수 있습니다. UR을 말하면 다른 활동이나 그 밖의 다른 것들이 나머지 space.suppose를 사용할 수 있다고 생각하면 if 터치가 액티비티 바운드에서 벗어났다면 이제는 액티비티가 어떻게 될지 알 수 있습니다. Windowmanager는 모든 touchevent가 인스턴스 전체를 표시하도록합니다. – 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와 창문의 위치에 대한 확인)

를 0
관련 문제