如何在Jetpack Compose中实现应用全透明或半透明背景效果
Jetpack Compose 实现应用全透明/半透明背景教程
要实现启动器的透明背景效果,需要同时配置窗口属性和Compose层布局,具体步骤如下:
第一步:配置Activity窗口透明属性
首先需要让承载Compose的Activity窗口本身支持透明效果,你可以二选一以下配置方式:- 代码动态配置(在
onCreate的setContent之前调用)
window.apply { // 全透明背景填Color.TRANSPARENT,半透明可传入带alpha通道的颜色,比如0x80000000是半透黑色 setBackgroundDrawable(ColorDrawable(android.graphics.Color.TRANSPARENT)) // 可选配置:如果需要同步透明状态栏、导航栏可以加以下两行 statusBarColor = android.graphics.Color.TRANSPARENT navigationBarColor = android.graphics.Color.TRANSPARENT }- 静态主题配置(在
res/values/themes.xml的应用主题中添加属性)
<item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowIsTranslucent">true</item> <!-- 可选配置:透明状态栏、导航栏 --> <item name="android:statusBarColor">@android:color/transparent</item> <item name="android:navigationBarColor">@android:color/transparent</item>- 代码动态配置(在
第二步:配置Compose根布局背景
窗口配置完成后,只需要给Compose的根容器设置对应透明度的背景色即可:setContent { YourCustomAppTheme { Surface( modifier = Modifier.fillMaxSize(), // 全透明用Color.Transparent,半透明传入带alpha的Color,前两位为alpha值,00为全透,FF为完全不透明 // 示例:半透白色为Color(0x7FFFFFFF) color = Color.Transparent ) { // 此处放置你的启动器业务内容 } } }
注意:如果你的自定义主题中默认给Surface组件设置了不透明的背景色,必须手动覆盖上述Surface的color参数,否则透明配置不会生效
拓展:如果要实现毛玻璃半透效果,Android 12及以上系统可在窗口配置中新增
setBlurBehindRadius(20)(数值越大模糊程度越高),同时需要在清单文件中添加权限<uses-permission android:name="android.permission.BLUR_BEHIND" />即可实现系统级模糊效果,低版本系统需要自行截取桌面背景做模糊处理后再作为布局背景使用。
内容的提问来源于stack exchange,提问作者Nitin Tej
相关产品推荐
相关产品推荐

