ActionBar隐藏与出现

项目做了一次小的启动优化, 由于某种原因,launchActivity被我拿掉直接并到了MainActivity里(专门为launch的splash准备一个Activity其实挺浪费的).
结果出现了著名的启动白屏问题, 这个问题之前就碰到过,root cause其实是android的渲染层机制,直接原因就是因为Activity使用了ActionBar(当然了,不知道sherlockactionbar会不会有同样问题),贴一篇将app启动的文章吧, http://cyrilmottier.com/2013/01/23/android-app-launching-made-gorgeous/, 讲的不算深,但是还不错.
知道了这个原因,问题就好办了,把ActionBar拿掉显然不行,因为在项目中已经根深蒂固了,老实说,我对ActionBar的印象不好,虽然Android设计文档中推荐,简单的App用当然很好用,封装的好,分离性也好,但是涉及到复杂的交互时,因为ActionBar的特殊地位与相对独立的控制,Action
Bar反而会成为累赘与例外制造者,并且,完全可以用fragment之类的机制来实现同样的效果,不说了,反正现在也那不掉.
既然拿不掉,那么hide不就OK了么? 结果发现没有用,一直显示…, 并且我在hide的注释里还找到一个建议:
Instead of calling this function directly, you can also cause an
ActionBar using the overlay feature to hide through
{@link View#SYSTEM_UI_FLAG_FULLSCREEN View.SYSTEM_UI_FLAG_FULLSCREEN}.
Hiding the ActionBar through this system UI flag allows you to more
seamlessly hide it in conjunction with other screen decorations.

显然是建议我尝试SYSTEM_UI_FLAG_FULLSCREEN,还是没有用……….
后来采用了一种曲线救国的办法: Activity的Theme不能直接设置,要在onCreate 中setTheme(有ActionBar的样式),然后getActionBar.hide(都要在setContentView之前,常识), setContentView(splash layoput),然后,在splash之后setContentView(content layout), getActionBar.show().终于做到隐藏然后出现了.
抽时间把ActionBar的源码实现看看吧. ActionBar貌似一直是个trouble-maker.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值