最近做项目时,由于后台接口暂时没调,登录一步就直接跳过了(点击登录按钮直接跳转后面页面),界面运行很顺畅 。后来可以登录了,因为在登录页的onCreate方法中会判断获取本地保存的用户名及密码,这无疑就导致了在执行onCreate时占用了时间,这时也就出现了白屏问题。而使用setContentView又一定要放在onCreate中,setContentView本身,就需要占用时间,所以这个白屏无法从根本上消除。
这个白屏是由activity的theme项来决定,学名Preview,,消除的方法,是继承系统给定的样式(values文件夹下styles.xml)添加以下红色代码来禁用其预览页。:
<!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="android:windowDisablePreview">true</item> </style>
当然,也可以通过
|
<item name="android:windowBackground"></item>
|
来指定显示的背景页。
注意:如果通过windowsBackground设置背景图后,在以后设计布局的时候,如果你没有给某个区域指定背景色,那么该区域默认透明,将会将背景图透视到前台。
在补充几个继承或者自定义主题时有用的Theme项,,(取自themes.xml)
//背景图 <item name="windowBackground">@android:drawable/dark</item> //前景图 <item name="windowFrame">@null</item> //是否展示标题 <item name="windowNoTitle">false</item> //是否全屏 <item name="windowFullscreen">false</item> //是否为悬浮窗 <item name="windowIsFloating">false</item> //是否显示用户的壁纸 <item name="windowShowWallpaper">false</item> //动画样式(说白了就是activity切换的动画) <item name="android:windowAnimationStyle"></item> //让背景透明, //在activity左右滑动时,划出区域显示下方的窗口 <item name="android:windowIsTranslucent">true</item>