public void show(int timeout) {
if (!isshow) {
if (pauseBtn != null) {
pauseBtn.requestFocus();
}
showTopLayout();
showBootomLayout();
isshow = true;
}
}
/**显示头部*/
private void showTopLayout() {
LayoutInflater inflater = LayoutInflater.from(this);
textLayout = (LinearLayout) inflater.inflate(R.layout.textview, null);
WindowManager.LayoutParams p = new WindowManager.LayoutParams();
p.gravity = Gravity.TOP;
p.width = mdisPlayWidth;
p.height = LayoutParams.WRAP_CONTENT;
p.x = 0;
p.y = 0;
p.format = PixelFormat.TRANSLUCENT;
p.type = WindowManager.LayoutParams.TYPE_APPLICATION;
p.token = null;
// /悬浮框没有按键响应,也不接受触摸响应
p.flags |= WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;
p.flags |= WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
mwindowManager = (WindowManager) this
.getSystemService(Context.WINDOW_SERVICE);
mwindowManager.addView(textLayout, p);
}
/**显示底部*/
private void showBootomLayout() { LayoutInflater inflater = LayoutInflater.from(this); controllerLayout = (LinearLayout) inflater.inflate( R.layout.media_controller, null); setControllerClick(); WindowManager.LayoutParams p = new WindowManager.LayoutParams(); p.gravity = Gravity.TOP; p.width = mdisPlayWidth; p.height = LayoutParams.WRAP_CONTENT; p.x = 0; p.y = mdisPlayHeight - p.height; p.format = PixelFormat.TRANSLUCENT; p.type = WindowManager.LayoutParams.TYPE_APPLICATION; p.token = null; // /悬浮框可以获得焦点触发事件,并且其他键盘按键也可以相应 p.flags |= WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM; p.flags |= WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; WindowManager windowManager = (WindowManager) this .getSystemService(Context.WINDOW_SERVICE); windowManager.addView(controllerLayout, p); }
private void hide() { if (controllerLayout != null && isshow == true) { isshow = false; // if not add this codes ,so throw error // android.view.WindowLeaked: Activity org.doubango.imsdroid. // Main has leaked window android.widget.TextView@40753348 that was // originally added here // reason:在没有关闭对话框的时候你把activity给finish,所以造成了这样的结果 mwindowManager.removeView(controllerLayout); mwindowManager.removeView(textLayout); controllerLayout = null; textLayout = null; } }