Activity透明

960 阅读1分钟

文章

1. Android实现AppCompatActivity全屏半透明

2. Android兼容性优化-Android 8.0设置Activity透明主题崩溃

3. Android 设置透明 activity

本地验证

方法一 : 红米/Android R验证有效

android {
    compileSdk 31

    defaultConfig {
        applicationId "com.huanhailiuxin.project001"
        minSdk 29
        targetSdk 31
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
<color name="transparent">#00000000</color>

//1:状态栏和导航栏颜色相比较Activity打开前仍然能看出来
<style name="Transparent" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowBackground">@color/transparent</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowAnimationStyle">@null</item>
    <item name="android:windowNoTitle">true</item>
    <!--控制状态栏及导航栏是否透明-->
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:windowTranslucentNavigation">true</item>
</style>

//2:状态栏和导航栏颜色相比较Activity打开前,完全无变化
<style name="Transparent" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowBackground">@color/transparent</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowAnimationStyle">@null</item>
    <item name="android:windowNoTitle">true</item>
    <!--控制状态栏及导航栏是否透明-->
    <item name="android:statusBarColor">@color/transparent</item>
    <item name="android:navigationBarColor">@color/transparent</item>
</style>

<activity
    android:name=".activity.Translucent.TranslucentActivity"
    android:exported="true"
    android:theme="@style/Transparent"
    android:screenOrientation="portrait"
    />

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".activity.Translucent.TranslucentActivity"
    android:background="@android:color/transparent"
    >
    <androidx.appcompat.widget.AppCompatButton
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toTopOf="parent"
        android:text="透明Activity上的Button"
        />
</androidx.constraintlayout.widget.ConstraintLayout>
class TranslucentActivity : BaseActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_translucent)
    }
}


import androidx.appcompat.app.AppCompatActivity
open class BaseActivity : AppCompatActivity() {
}