Android activity主题设置

lei.li / 2024-08-05 / 原文

主题配置

<style name="MainThemeCamera" parent="Theme.AppCompat.DayNight.NoActionBar">
        <item name="android:windowBackground">@color/black</item>
        <item name="android:windowTranslucentStatus">false</item>
        <item name="android:windowTranslucentNavigation">false</item>
        <item name="android:windowContentTransitions">true</item>
        <item name="android:windowActivityTransitions">true</item>
 
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsTranslucent">false</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowAnimationStyle">@null</item>
        <item name="android:fitsSystemWindows">false</item>
        <item name="android:windowFullscreen">false</item>
        <item name="android:windowActionBar">true</item>
        <item name="android:statusBarColor">@android:color/transparent</item>
        <item name="android:navigationBarColor">@android:color/transparent</item>
    </style>
    <style name="TranslucentTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
        <item name="android:windowBackground">@color/transparent</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowAnimationStyle">@null</item>
        <item name="android:fitsSystemWindows">true</item>
        <item name="android:windowFullscreen">false</item>
        <item name="android:windowActionBar">true</item>
        <item name="android:statusBarColor" tools:ignore="NewApi">@android:color/transparent</item>
        <item name="android:navigationBarColor" tools:ignore="NewApi">@android:color/transparent</item>
    </style>

 

方法1 AndroidManifest 设置theme

<activity android:name="com.android.demo.lileidemo.ui.activity.SimpleTestActivity"
android:theme="@style/TranslucentTheme">
</activity>

 

方法2 Activity 中设置theme

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.MainThemeCamera);
...
}

注意 如果AndroidManifest 默认陪着一个主题,然后onCreate代码中动态切换主题,主题背景色切换 会有一个闪的过程。