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;
}
}