視頻播放全屏時其它控件的隱藏以及還原

項目當中有播放視頻監控的需求,並且需要全屏播放的功能,完成之後在此記錄。

其實就是佈局控件和狀態欄的隱藏與現實以及橫豎屏的切換,代碼如下:

                    //如果豎屏,則設置爲橫屏
if(mActivity.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT){
mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);// 設置當前activity爲橫屏


//隱藏mainActivity的radiogroup
mActivity.findViewById(R.id.rg_group).setVisibility(View.GONE);
//隱藏佈局控件
rl_title.setVisibility(View.GONE);
rl_managermentName.setVisibility(View.GONE);
btn_video_call.setVisibility(View.GONE);
btn_message.setVisibility(View.GONE);
tv_full.setText("退出全屏");


//隱藏狀態欄
WindowManager.LayoutParams lp = mActivity.getWindow().getAttributes();
lp.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
mActivity.getWindow().setAttributes(lp);
mActivity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);


//視頻佈局大小的設置爲全屏
LinearLayout.LayoutParams params=new LinearLayout.LayoutParams( LayoutParams.MATCH_PARENT,  LayoutParams.MATCH_PARENT);
rl_firstFragment.setLayoutParams(params); // 使設置好的佈局參數應用到控件rl_firstFragment   
}else{
mActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);// 設置當前activity爲豎屏
//顯示各控件   
mActivity.findViewById(R.id.rg_group).setVisibility(View.VISIBLE);
rl_title.setVisibility(View.VISIBLE);
rl_managermentName.setVisibility(View.VISIBLE);
btn_video_call.setVisibility(View.VISIBLE);
btn_message.setVisibility(View.VISIBLE);
tv_full.setText("全屏");


//顯示狀態欄
WindowManager.LayoutParams attr = mActivity.getWindow().getAttributes();
attr.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);
mActivity.getWindow().setAttributes(attr);
mActivity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);


//視頻大小控件還原
LinearLayout.LayoutParams params=new LinearLayout.LayoutParams( LayoutParams.MATCH_PARENT,  DensityUtils.dpTopx(mActivity, 250));
rl_firstFragment.setLayoutParams(params); // 使設置好的佈局參數應用到控件rl_firstFragment  
}


還有就是可能推出全屏用戶點擊的是返回鍵。這時候就需要對返回鍵的 處理,代碼如下:

順便帶上雙擊退出程序的功能代碼

private long exitTime=0;

public boolean onKeyDown(int keyCode, KeyEvent event) {


//如果當前爲橫屏
if((getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);// 設置當前activity爲豎屏
//顯示各控件(fragment加載之後,在主activity可以直接find fragment的控件進行操作)   
findViewById(R.id.rg_group).setVisibility(View.VISIBLE);
findViewById(R.id.rl_title).setVisibility(View.VISIBLE);
findViewById(R.id.rl_managermentName).setVisibility(View.VISIBLE);
findViewById(R.id.btn_video_call).setVisibility(View.VISIBLE);
findViewById(R.id.btn_message).setVisibility(View.VISIBLE);
TextView tv_full=(TextView)findViewById(R.id.tv_full);
tv_full.setText("全屏");


//顯示狀態欄
WindowManager.LayoutParams attr = getWindow().getAttributes();
attr.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().setAttributes(attr);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);




//視頻大小控件還原
LinearLayout.LayoutParams params=new LinearLayout.LayoutParams( LayoutParams.MATCH_PARENT,  DensityUtils.dpTopx(this, 250));
findViewById(R.id.rl_firstFragment).setLayoutParams(params); // 使設置好的佈局參數應用到控件rl_firstFragment  
return false;
}else{
if(keyCode==event.KEYCODE_BACK){
exit();
return false;
}


return super.onKeyDown(keyCode, event);
}
}

public void exit() {
if ((System.currentTimeMillis() - exitTime) > 1500) {
Toast.makeText(getApplicationContext(), "再按一次退出程序",
Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
finish();

MyApplication.getInstance().exit();
}
}

發佈了23 篇原創文章 · 獲贊 8 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章