项目中有这样一个需求,H5页面调用本地方法,弹出一个类似京东天猫的筛选侧边栏,侧边栏高度就是屏幕高度。因为所有的H5页面都在同一个Fragment里,但是这个fragment并不固定在哪里(比如有些在TabLayout中,fragment的高度明显不够),所以没在fragment里实现这个侧边栏。
我的想法是打开一个新的activity,在里面写一个DrawerLayout实现侧边栏。
需要解决两个问题
- 透明背景,透明背景其实有两部分,一是给activity设置透明背景,这个很简单,二是给window设置透明,
- 去掉activity的过渡动画。
解决这两个问题,给activity设置下面的主题就ok了,BaseAppTheme是自定义的base主题
<style name="TransparentTheme" parent="BaseAppTheme">
<!--window背景透明-->
<item name="android:windowBackground">@color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<!--window透明-->
<item name="android:windowIsTranslucent">true</item>
<!--去掉过渡动画-->
<item name="android:windowAnimationStyle">@null</item>
</style>
好吧,其实就是把系统的一个主题改了一下,系统有一个主题@android:style/Theme.Translucent
查看代码是这样的
<!-- Theme for translucent activities (on API level 10 and lower). That is, windows
that allow you to see through them to the windows behind. This sets up the translucent
flag and appropriate animations for your windows. -->
<style name="Theme.Translucent">
<item name="windowBackground">@color/transparent</item>
<item name="colorBackgroundCacheHint">@null</item>
<item name="windowIsTranslucent">true</item>
<!-- Note that we use the base animation style here (that is no
animations) because we really have no idea how this kind of
activity will be used. -->
<item name="windowAnimationStyle">@style/Animation</item>
</style>