viewAndroid技术知识Android知识

Android 全屏与沉浸式

2017-01-11  本文已影响1297人  JohnyPeng

[图片上传中。。。(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);

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

沉浸式
上一篇 下一篇

猜你喜欢

热点阅读