在搜索栏更改时显示透明 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 的值。
当我们改变亮度时,它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 的值。