a. mWindow.setBackgroundDrawable(null); 解决Crash问题
b.
vehicleView.setFocusableInTouchMode(true);
contentView.setOnKeyListener(new android.view.View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU ) {
if (mWindow != null && mWindow.isShowing()) {
mWindow.dismiss();
return false;
}
}else if(keyCode == KeyEvent.KEYCODE_BACK){
//TODO
if (mWindow != null && mWindow.isShowing()) {
mWindow.dismiss();
return false;
}
}
return false;
}
});
contentView.setOnTouchListener(new android.view.View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
final int x = (int) event.getX();
final int y = (int) event.getY();
if ((event.getAction() == MotionEvent.ACTION_DOWN)
&& ((x < 0) || (x >= contentView.getWidth()) || (y < 0) || (y >= contentView.getHeight()))) {
if (mWindow != null && mWindow.isShowing()) {
mWindow.dismiss();
return false;
}
} else if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
if (mWindow != null && mWindow.isShowing()) {
mWindow.dismiss();
return false;
}
}
return false;
}
});
b.
vehicleView.setFocusableInTouchMode(true);
contentView.setOnKeyListener(new android.view.View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU ) {
if (mWindow != null && mWindow.isShowing()) {
mWindow.dismiss();
return false;
}
}else if(keyCode == KeyEvent.KEYCODE_BACK){
//TODO
if (mWindow != null && mWindow.isShowing()) {
mWindow.dismiss();
return false;
}
}
return false;
}
});
contentView.setOnTouchListener(new android.view.View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
final int x = (int) event.getX();
final int y = (int) event.getY();
if ((event.getAction() == MotionEvent.ACTION_DOWN)
&& ((x < 0) || (x >= contentView.getWidth()) || (y < 0) || (y >= contentView.getHeight()))) {
if (mWindow != null && mWindow.isShowing()) {
mWindow.dismiss();
return false;
}
} else if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
if (mWindow != null && mWindow.isShowing()) {
mWindow.dismiss();
return false;
}
}
return false;
}
});