Android 全屏与沉浸式

作者: JohnyPeng | 来源:发表于2017-01-11 10:00 被阅读1297次

    [图片上传中。。。(1)]# 前言
    Android沉浸式与全屏是不一样的两种主题,接下来我们看看吧

    Android实现全屏

    通过主题属性来实现

    <style name="FullScreenTheme">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowFullscreen">true</item>
        <item name="android:background">#ff00beb4</item>
    </style>
    

    在AndroidManifest.xml中使用

    <activity android:name=".TestActivity"
        android:theme="@style/FullScreenTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
    

    使用全屏的主题

    <activity android:name=".TestActivity"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
    

    或者

    <activity android:name=".TestActivity"
        android:theme="@android:style/Theme.Material.NoActionBar.Fullscreen">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
    

    java代码中设置属性

    requestWindowFeature(Window.FEATURE_NO_TITLE);//这行代码一定要在setContentView之前,不然会闪退
    setContentView(R.layout.activity_test);
    Window window = getWindow();
    window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    

    效果图

    全屏效果图

    Android实现沉浸式

    半沉浸式

    <style name="ImmersionTheme">
        <item name="android:windowTranslucentNavigation">true</item>
        <item name="android:windowTranslucentStatus">true</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:background">#ff00beb4</item>
    </style>
    

    使用:

    <activity android:name=".TestActivity"
        android:theme="@style/ImmersionTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
    

    半沉浸式效果图

    半沉浸式5.1

    这不是好好的吗?但这是5.1的系统,当切换到6.0以后的系统的时候

    半沉浸式6.0.png

    导航栏的阴影是不是很明显呢。。

    全沉浸式6.0

    Window window = activity.getWindow();
    window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
            | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
    window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
    window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    window.setStatusBarColor(Color.TRANSPARENT);
    window.setNavigationBarColor(Color.TRANSPARENT);
    

    加上这段代码就可以了,效果如图

    沉浸式

    相关文章

      网友评论

      本文标题:Android 全屏与沉浸式

      本文链接:https://www.haomeiwen.com/subject/nznlbttx.html