【问题标题】:Show transparent activity on seekbar change在搜索栏更改上显示透明活动
【发布时间】:2017-06-14 11:21:45
【问题描述】:

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

我的 App 主活动背景颜色为灰色,

我想在搜索栏拖动时:我的活动变得透明并显示背景活动/背景主屏幕,

当拖动完成后在灰色背景上恢复正常。

我的研究:

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

这是我最后一次尝试:

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

每次我按照 StackOverflow 回答时,都会收到此错误:

"您需要使用 Theme.AppCompat 主题(或后代) 活动。”

=>我也试试,透明背景色,透明可绘制,从清单中透明,

结果:背景显示为白色,不透明

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

我的清单文件

<?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"
>

【问题讨论】:

标签: android android-animation android-manifest android-linearlayout transparency


【解决方案1】:

“您需要在此活动中使用 Theme.AppCompat 主题(或后代)。”

这是因为您需要使用 AppCompat 主题。因此,您可以在您的 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>

【讨论】:

  • 我只是在我的 style.xml 中添加您的样式,在清单活动 android:theme="@android:style/Theme.Translucent" ---- 仍然返回相同的错误...请检查问题,我添加我的完整清单文件
  • @AsadRaza 在您的清单中,您需要使用 Theme.AppCompat.Translucent。查看我的编辑
  • 喜欢这个? android:theme="@android:style/Theme.AppCompat.Translucent" ---- 返回错误。 “无法解决”,您的代码在 resource/values/style.xml
  • 不,你不需要 android 前缀,因为这是一个自定义主题,请参阅我编辑的答案
  • 爱你.. 谢谢 :),现在请告诉我,如何在运行时从 java 代码更改活动透明和纯色...
【解决方案2】:

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

通过在java中使用这种技术,你可以这样做

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

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

【讨论】:

  • 我在 onCreate() 中使用了你的代码,它改变了我的活动背景颜色浅色和深色,不透明。 :(
  • 您的实际布局背景颜色是什么,您使用什么颜色来透明?你能给我看看那个样本吗?
  • 尝试在相对布局中放置一个临时文本视图并再次检查它会在透明度较低时消失。
  • 如果真的有帮助,请批准我的回答。
  • 我从活动中删除所有样式来测试你的代码...我用“#”+20+“000000”......“#”+50+“000000”...... ... "#"+80+"000000",结果只是灰色和深灰色,不透明
猜你喜欢
  • 2018-10-18
  • 1970-01-01
  • 2013-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-30
相关资源
最近更新 更多