在搜索栏更改时显示透明活动

时间:2017-06-14 11:21:45

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

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

我的应用主要活动背景颜色为灰色,

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

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

我的研究:

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

这是我的最后一次尝试:

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

每次当我关注StackOverflow答案时,都会收到此错误:

  

&#34;您需要使用Theme.AppCompat主题(或后代)   。活性&#34;

=&gt;我也尝试,透明背景颜色,透明可绘制,透明清晰,

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

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

我的清单文件

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

2 个答案:

答案 0 :(得分:1)

  

&#34;您需要在此活动中使用Theme.AppCompat主题(或后代)。&#34;

这是因为您需要使用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>

答案 1 :(得分:1)

对于颜色透明度,你应该提供8位数的颜色代码,其中#之后的前两位数代表百分比的透明度,所以如果你想要50%透明度的白色,你应该把颜色值写成“#50ffffff”。

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

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

其中i将从00到99,因为i颜色透明度的值将被更改。因此,根据搜索栏值增加和减少i的值从00到99。