2025年Android Activity 透明主题 使用

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 ;还有一个是在做启动优化的时候用到过透明主题 ,为什么启动优化会用到这个 ,简单的说就是在启动的时候用透过代替白屏 ,眼睛看到的时候已经是广告页或者是首页(可以理解为视觉优化) 。

小讯
上一篇 2025-01-28 07:58
下一篇 2025-02-14 22:29

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/72984.html