android 应用动态切换主题

  由于android系统Theme的设置必须放在onCreate之前,导致每次切换主题都必须重启Activity(对应用级的Theme切换必须重启整个应用),这样对用户的体验来说是非常糟糕的。经过研究,得到一个折中的方法,谨在此记录之,让大家少点弯路。同时,也欢迎同仁们提出自己的见解,使之更完美。

  好了,废话不说,先来看效果图:

  “黑色” 主题:

  

  

   ”白色“主题:

  

  系统中定义两个theme:

   <style name="Black">
        <item name="android:background">@android:color/black</item>
        <item name="android:textColor">#e0ff33dd</item>
    </style>


    <style name="White">
        <item name="android:background">#ffffffff</item>
        <item name="android:textColor">#e0ff4f00</item>

    </style>

    开始的时候采取先销毁activity,再启动该activity,发现在有些手机上会有动画效果,后来取巧,采用recreate()函数,完美解决了该问题(注意:系统要求 sdk 11 以上 , 否则就得自己写动画了)。

    但是想想,该theme只添加到了该activity,如果再在该应用中启动另外一个activity会是什么效果呢?

           果然不出所料,另起的activity,使用的是application的theme 。 肿么办? 继承,看起来不错 ~ _ ~,系统中所有的activity接继承与一个BaseActivity , 它就专门在启动之初设置activity的theme , 这样看起来就跟使用的是application的theme i一样。 

   当然最完美,理想的就是销毁当前的application,然后再在application级设置主题。有兴趣的可以去试一试......


  下面是完整项目地址: 

     http://download.csdn.net/detail/sun_star1chen/5649523

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值