今天在调试程序的时候发现了一个问题,在MainActivity加载前就会其他界面显示,如下图:
一直以为是设备卡的原因造成,后开调试发现在MianActivity的onCreat()方法前就出现了,完全不知道是什么原因,有过好多猜测,可能和使用的lib有关,因为这个Activity是继承的一个第三方类库,但是也不太可能在onCreat()之前就出现吧,调试了了好久没什么结果。然后换了主Activity,还是会有这个问题,然后就测地困惑了。
去问Google吧,貌似这个问题都不好描述,用什么关键字来搜索呢。。后来经过好久的搜索终于有点眉目了,好像是和ActionBar有关,在API11以后,默认主题中是带有ActionBar的,在应用启动时,是默认会显示的(就像API11前启动时默认是全黑的界面,这个就是全黑加一个ActionBar,这些都是和Theme设置有关的)。
而这个明显不是默认主题,是自定义的ActionBar,在style.xml中有相关的设置。
那么怎么解决这个问题,又是好久的搜索和尝试。。。
1.在启动时先加载SplashActivity,可能这个activity动作很少,速度较快,能跳过那个难看的actionbar界面。。结果是失败告终。
2.查到可以在manifest文件中设置activity的theme为
<activity android:theme="@android:style/Theme.Holo.NoActionBar">
但是minSdkVersion为8,根本就没有这个theme,于是将8改成了11,加入这个设置,问题差不多就解决了。
程序在启动时还是会先出现黑屏,再进入activity。后面经过搜索,也解决了,通过自定义theme,可以将黑色设置为任何颜色或者透明
<style name="MyTheme" parent="android:Theme.Holo.Light">
<item name="android:windowIsTranslucent">true</item>透明
<item name="android:windowNoTitle">true</item>无标题
<item name="android:windowActionBar">false</item>去掉ActionBar
<item name="android:windowBackground">@android:color/transparent</item>透明
</style>
在启用这个Theme以后,将minSdkVersion改回8也有效,问题解决。