背景
在有些場(chǎng)景下,會(huì)使用到透明的activity做中轉(zhuǎn),但是有的時(shí)候可能沒有成功finish這個(gè)透明的頁面會(huì)阻止用戶正常操作
譬如: 在微博登錄SDK,有個(gè)透明的acitivity有的時(shí)候會(huì)沒關(guān)掉
方案
網(wǎng)上的方案是
getWindow().addFlags( WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
//doSomeTing
return true;
}
這種方式在點(diǎn)擊前一個(gè)頁面時(shí),這個(gè)頁面的dispatchTouchEvent沒有被調(diào)用到,透明的activity會(huì)永遠(yuǎn)存在,而且在啟動(dòng)截圖的時(shí)候崩潰了,顯然這樣肯定有問題
我采用了這個(gè)方案,這個(gè)方案dispatchTouchEvent會(huì)被調(diào)用到
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
|WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
//doSomeTing
finish();
return true;
}