这是我参加【第四届青训营】笔记创作活动的第12天
这是因为app的窗口主题设置原因导致的,属于正常的现象,只是由于主页的启动 相对较慢并没有及时显示主页。所以可以考虑再app主页正常显示出来之前,替换主题背景。
自定义一个主题
首先找到app默认主题的位置——在项目目录res/values/themes.xml文件中。怎么找到的呢? 看项目的配置文件AndroidManifest.xml文件中,直接在标签的目录下有一个android:theme属性,后面的@style/Theme.XXX值就是app的窗口背景,因为在文件themes.xml中就是定义标签的。
找到app窗口主题定义的文件,就可以仿照其默认主题定义的方式去定义自己的主题背景了。在这里定义一个自己的主题:
<style name="Theme.PrePage" parent="Theme.AndroidDemo">
<!-- 设置窗口背景-->
<item name="android:windowBackground">@color/teal_700</item>
<!-- 设置窗口背景占满整个屏幕-->
<item name="android:windowFullscreen">true</item>
<!-- 设置屏幕下方的功能栏透明-->
<item name="android:navigationBarColor">@android:color/transparent</item>
</style>
该主题继承的是app默认的主题。
替换主题背景
定义成功后我们需要设置为自己的主题,因为只会关系到主页所以我们可以直接设置主页的主题,在主页的标签中也有设置主题的属性,同样是android:theme="@style/Theme.PrePage"设置的方式将自己定义的主题用命名的方式设置,就成功设置了主页的主题背景。这个主题背景是设置的主页的,所以会在主页显示的时候一直显示 ,所以在活动启动成功后就需要将主题切换到原来默认的主题了。在主页活的onCreate方法中,在第一行的位置就可以替换主题了,具体代码也只要一行就行:
setTheme(R.style.Theme_AndroidDemo);
使用原来主题的名称设置主题就行。
标题:「客户端架构设计及应用」第四届字节跳动青训营 - Android 客户端专场