全屏設(shè)置
方式一 setContentView前設(shè)置FLAG_FULLSCREEN
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//無title
requestWindowFeature(Window.FEATURE_NO_TITLE);
//全屏
getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN ,
WindowManager.LayoutParams. FLAG_FULLSCREEN);
setContentView(R.layout.main);
}
方式二 修改界面主題為android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
用方式一跳轉(zhuǎn)到對應(yīng)全屏界面時垄潮,會看到短暫的狀態(tài)欄,然后才全屏闷盔,而方式二這種方法是不會有這種情況弯洗。
方式三 動態(tài)修改全屏或非全屏(推薦)
假如程序運行過程中,執(zhí)行了某個操作需要全屏馁筐,然后還需要退出全屏涂召,方法如下
動態(tài)全屏
WindowManager.LayoutParams attrs = getWindow().getAttributes();
attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setAttributes(attrs);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
// 添加FLAG_LAYOUT_NO_LIMITS標(biāo)志,window會自動重新布局敏沉,呈現(xiàn)全屏的狀態(tài)
動態(tài)退出全屏
WindowManager.LayoutParams attrs = getWindow().getAttributes();
attrs.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().setAttributes(attrs);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
全屏界面切換到非全屏界面
上述操作有兩種:
- 全屏界面啟動非全屏頁面
- 非全屏啟動全屏然后按返回鍵
但是在頁面切換到非全屏界面時果正,會出現(xiàn)先顯示頁面內(nèi)容炎码,然后由于狀態(tài)欄的出現(xiàn),整個界面下移一個狀態(tài)欄高度的問題秋泳。
解決辦法
@Override
protected void onStart() {
super.onStart();
// 1. onStart時調(diào)用添加方法
smoothSwitchScreen();
}
private void smoothSwitchScreen() {
ViewGroup rootView = ((ViewGroup) this.findViewById(android.R.id.content));
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
int statusBarHeight = getResources().getDimensionPixelSize(resourceId);
// 給整個ContentView設(shè)置上padding為狀態(tài)欄高度
rootView.setPadding(0, statusBarHeight, 0, 0);
// 該參數(shù)會讓界面無狀態(tài)欄限制潦闲,填滿整個屏幕,從而全屏迫皱,由于上padding為狀態(tài)欄高度歉闰,故整體整體顯示和默認(rèn)相同,從而界面不會出現(xiàn)下移
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
``