全屏設(shè)置
方式一 setContentView前設(shè)置FLAG_FULLSCREEN
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//無(wú)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)到對(duì)應(yīng)全屏界面時(shí),會(huì)看到短暫的狀態(tài)欄,然后才全屏,而方式二這種方法是不會(huì)有這種情況。
方式三 動(dòng)態(tài)修改全屏或非全屏(推薦)
假如程序運(yùn)行過(guò)程中,執(zhí)行了某個(gè)操作需要全屏,然后還需要退出全屏,方法如下
動(dòng)態(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會(huì)自動(dòng)重新布局,呈現(xiàn)全屏的狀態(tài)
動(dòng)態(tài)退出全屏
WindowManager.LayoutParams attrs = getWindow().getAttributes();
attrs.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().setAttributes(attrs);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
全屏界面切換到非全屏界面
上述操作有兩種:
- 全屏界面啟動(dòng)非全屏頁(yè)面
- 非全屏啟動(dòng)全屏然后按返回鍵
但是在頁(yè)面切換到非全屏界面時(shí),會(huì)出現(xiàn)先顯示頁(yè)面內(nèi)容,然后由于狀態(tài)欄的出現(xiàn),整個(gè)界面下移一個(gè)狀態(tài)欄高度的問(wèn)題。
解決辦法
@Override
protected void onStart() {
super.onStart();
// 1. onStart時(shí)調(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);
// 給整個(gè)ContentView設(shè)置上padding為狀態(tài)欄高度
rootView.setPadding(0, statusBarHeight, 0, 0);
// 該參數(shù)會(huì)讓界面無(wú)狀態(tài)欄限制,填滿整個(gè)屏幕,從而全屏,由于上padding為狀態(tài)欄高度,故整體整體顯示和默認(rèn)相同,從而界面不會(huì)出現(xiàn)下移
getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
``