如何动态设置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的方法