Android應(yīng)用全屏與非全屏設(shè)置及過(guò)度過(guò)度問(wèn)題解決

全屏設(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);
}
``
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容