如何动态设置activity背景透明度

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何动态设置activity背景透明度相关的知识,希望对你有一定的参考价值。

在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作。在Android中Activity的启动模式决定了Activity的启动运行方式。
  Android总Activity的启动模式分为四种:

Activity启动模式设置:

<activity android:name=".MainActivity" android:launchMode="standard" />

Activity的四种启动模式:

1. standard

模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中。

2. singleTop

如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,否者就会创建新的实例并放入栈顶(即使栈中已经存在该Activity实例,只要不在栈顶,都会创建实例)。

3. singleTask

如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中。

4. singleInstance

在一个新栈中创建该Activity实例,并让多个应用共享改栈中的该Activity实例。一旦改模式的Activity的实例存在于某个栈中,任何应用再激活改Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。

  其中standard是系统默认的启动模式。
参考技术A aaa.setBackgroundDrawable(getResources().getDrawable(R.drawable.xxx));

xxx是一个透明度的颜色,比如#ffDBD0A7 前面ff两位就是透明度,00代表全透明,ff代表全不透明。

Activity设置背景透明之开发坑

Activity设置背景透明的常规方法

方法一、在Manifest.xml中,直接在需要设置的Activity中添加主题样式:

Android:theme="@android:style/Theme.Translucent"

此外,可以在Activity布局文件中增加如下代码控制透明度

android:background="#01000000"  

方法二、

  1、在自己项目的style文件下

  <style name="translucent"> 
    <item name="android:windowBackground">@color/translucent</item>
     <item name="android:windowIsTranslucent">true</item>
   </style>

  2、在自己项目的color文件中(android:windowBackground的颜色必须写在color中)

  <color name="translucent">#01000000</color>

  3、在Manifest中的Activity下

        android:exported="true"
        android:theme="@style/ActivityTranslucent"    

以上便是常规的设置,但是我们开发中不可避免的会引入v4下的某些东西,比如Fragment,这个时候,方法一不在适用,方法二,需要增加点东西

只需要在方法二的第一步中,使style集成Theme.AppCompat下的主题即可。如:

  <style name="translucent" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowBackground">@color/translucent</item>
        <item name="android:windowIsTranslucent">true</item>
    </style>

 

以上是关于如何动态设置activity背景透明度的主要内容,如果未能解决你的问题,请参考以下文章

Android设置Activity背景为透明style的方法

Activity设置背景透明之开发坑

怎样将android控件背景设置成透明?

Android 代码设置Activity 背景透明

PB高手们请赐教!PB能使动态文本框背景透明吗?诸如“mle_1”控件,数据窗口背景能透明也行!见详述~

为啥创建的Activity背景是透明的?