一、 设置透明主题
<style name="ActivityTransparent" parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@color/color_00000000</item> <!-- 背景色透明度 -->
<item name="windowNoTitle">true</item><!-- 无标题 -->
<item name="android:windowActionBar">false</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsTranslucent">true</item><!-- 半透明,设置为false无透明效果 -->
<item name="android:backgroundDimEnabled">true</item><!-- 模糊 -->
</style>
需要注意的 因为我们的activity 都是继承自AppCompatActivity 所以我们的theme 也一定是AppCompat 样式的 ,我所使用的是 Theme.AppCompat.Light.NoActionBar
二、manifest里activity 引用主题
<activity
android:name=".AudioRecordActivity"
android:screenOrientation="portrait"
android:theme="@style/ActivityTransparent" />
``
三、设置activity 的状态栏全透明,适配部分机型半透明失效问题
// 设置全透明状态栏
setStatusBarFullTransparent()
setContentView(R.layout.activity_chnc_audio_record)
overridePendingTransition(R.anim.activity_translate_in, R.anim.common_none)
// 部分手机设置透明主题 无效问题
theme.applyStyle(R.style.ActivityTransparent,true)
设置状态栏全透明
/**
* 全透状态栏
*/
private fun setStatusBarFullTransparent() {
if (Build.VERSION.SDK_INT >= 21) { //21表示5.0
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
or View.SYSTEM_UI_FLAG_LAYOUT_STABLE)
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
window.statusBarColor = Color.TRANSPARENT
} else if (Build.VERSION.SDK_INT >= 19) { //19表示4.4
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
//虚拟键盘也透明
//getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}
}