在搜索栏更改时显示透明 activity

Show transparent activity on seekbar change

当我们改变亮度时,它activity变得透明 所以我们可以看到主屏幕/运行 后面的另一个应用程序。我想要 (与亮度搜索栏 100% 相同) 在我的自定义搜索栏上。

我的应用程序主activity背景颜色是灰色,

我想要当搜索栏拖动时:我的 activity 变得透明并显示背景 activities/Background 主屏幕,

拖动完成后,灰色背景恢复正常。

我的研究:

我搜索透明活动,我发现了很多问题和很多不同的风格和主题选项。

这是我最后一次尝试:

<activity android:name=".Activity" 
     android:theme="@android:style/Theme.Translucent">

每次我按照 Whosebug 的答案进行操作时,都会收到此错误:

"You need to use a Theme.AppCompat theme (or descendant) with this activity."

=>我也试过,透明背景色,透明可绘制对象,清单透明,

结果: 背景显白,不透明

我只有 1 个主 activity,带有自定义亮度搜索栏和其他选项。

我的清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="st.package">

<uses-permission 
android:name="android.permission.ACTION_MANAGE_OVERLAY_PERMISSION"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity"
        android:theme="@android:style/Theme.Translucent">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>


    <service android:name="st.package.ChatHeadService"
        android:exported="true">
    </service>

    <receiver android:name="MainActivity$switchButtonListener" />
</application>

MainActivity.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="overlayhead.overlayhead.MainActivity"
android:orientation="vertical"
android:windowIsTranslucent="true"
android:id="@+id/LinearLayout"
android:background="@android:color/transparent"
>

"You need to use a Theme.AppCompat theme (or descendant) with this activity."

因为您需要使用AppCompat Theme。因此,您可以在 styles.xml 中定义自定义主题并将其用作您想要的 Activity.

的主题
<style name="Theme.AppCompat.Translucent" parent="Theme.AppCompat.NoActionBar">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:colorBackgroundCacheHint">@null</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowAnimationStyle">@android:style/Animation</item>
    </style>

在您的清单文件中,将 Theme.AppCompat.Translucent 声明为您的主题

<activity android:name=".MainActivity"
        android:theme="@style/Theme.AppCompat.Translucent">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

对于颜色透明度,您应该提供 8 位数字的颜色代码,其中 # 之后的前两位数字代表透明度百分比,因此如果您想要透明度为 50% 的白色,那么您应该将颜色值写为“#50ffffff”。

通过在 java 中使用此技术,您可以这样做

yourLayout.setBackgroundColor(Color.parseColor("#"+i+"bdbdbd"));

根据 i 颜色透明度的值,i 将从 00 到 99。所以根据 seekbar 值增加和减少 i 从 00 到 99 的值。