Android Activity 透明主题 使用

        最近了解到一些朋友单身了 ,我就想说不就是一个购物车 ,至于吗 ?看朋友圈发现大部分单身的要比不单身的活的更精彩 ,俺也不知道为啥 ,以前单身的时候压力大 ,现在不单身了压力更大 。真的是人人都有一本难念的经书呀 。  对于现阶段感情上有挫折的朋友 ,我只想说但愿 " 有情人终成眷属 " ,并且不要太为难自己 ,有些事情或者结果如果把时间线拉长一点看的话也许是另一番风景 。 

 

       有个小伙伴问了一个关于透明主题的技术问题 ,想到之前只是在启动页优化的时候加过这个东西 ,其他的也到没有什么了解 ,脑子的想的是 这就是一个主题或者加个代码问题不大 ,今天写 Demo 的时候才发现有坑 ,只怪我当时很幸运 。

 

透明主题

什么是 Style 和 什么是 Theme ?

1. Style 对应的是 VIew 为主体 ,在自定义 View 的时候基本都会用到这个 Style 。还有就是我们在写项目的过程中如果发现很多 Adapter 的样式是一样的就可以写个 Style 可以省很多代码 。

 

比如下面的单行省略 ,在列表中 CourseName 要求单行省略 。

  <!--单行省略-->
    <style name="GC_Course_Title">
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:lines">1</item>
        <item name="android:ellipsize">end</item>
        <item name="android:maxEms">12</item>
        <item name="android:textSize">@dimen/font_size_five</item>
        <item name="android:textColor">@color/color_dark_grey</item>
    </style>

 

2. Theme 对应的是 Activity 为主体 。

    <!-- 系统主题样式 -->
    <style name="GC_Theme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!--actionbar底色-->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowActionBarOverlay">true</item>
        <item name="android:windowBackground">@color/color_bg</item>
        <!--不使用系统的toolbar-->
        <item name="android:windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="actionBarSize">50dp</item>
        <item name="android:windowAnimationStyle">@style/GC_Animation_Activity_Intent</item>
    </style>

 

透明主题设置方法

1. AndroidMainfest.xml 设置

 

//保留标题和状态栏
android:theme=“@android:style/Theme.Translucent”
//仅保留状态栏
android:theme=”@android:style/Theme.Translucent.NoTitleBar”
//全屏透明
android:theme=”@android:style/Theme.Translucent.NoTitleBar.Fullscreen”

2. 在 styles 中设置

设置透明颜色 color_bg 为 #00000000

    <!-- 系统主题样式 -->
    <style name="GC_Theme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!--actionbar底色-->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowActionBarOverlay">true</item>
        // 设置透明颜色 color_bg 为 #00000000
        <item name="android:windowBackground">@color/color_bg</item>
        <!--不使用系统的toolbar-->
        <item name="android:windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="actionBarSize">50dp</item>
        <item name="android:windowAnimationStyle">@style/GC_Animation_Activity_Intent</item>
    </style>

 

注意事项

1. 进行设置的页面已经要继承自 Activity ,例如继承的是 AppCompatActivity 的话必闪退 。

     Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

PS:原因是因为 Activity 和 AppCompatActivity 是有区别的 ,在此只提一个点就是 AppCompatActivity 是带有 Toolbar 的 。这个在进行项目框架封装的时候会遇到 ,比如 Activity 分为两个父类 ,一个是带 Bar 的父类一个是不带 Bar 的父类就需要两个父类去继承不同的Activity 。

 

扩展

       关于透明主题这个技术点 ,说实话在我的生涯中只有两个需求用到过这个功能 。一个是前年我在仿写一个 AOP 注解申请权限的时候用到过透明 Acitivity 的概念 ,当时是直接在项目中作为 module 使用并没有放在 Jitpack ;还有一个是在做启动优化的时候用到过透明主题 ,为什么启动优化会用到这个 ,简单的说就是在启动的时候用透过代替白屏 ,眼睛看到的时候已经是广告页或者是首页(可以理解为视觉优化) 。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值