UMA*_*MAR 881 android transparent android-activity
我想在另一个活动之上创建一个透明的Activity.
我怎样才能做到这一点?
gno*_*bal 1345
在您的res/values/styles.xml文件中添加以下样式(如果您没有,请创建它.)这是一个完整的文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.Transparent" parent="android:Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
(该值@color/transparent是#00000000我放入res/values/color.xml文件的颜色值.您也可以@android:color/transparent在以后的Android版本中使用.)
然后将样式应用于您的活动,例如:
<activity android:name=".SampleActivity" android:theme="@style/Theme.Transparent">
...
</activity>
Run Code Online (Sandbox Code Playgroud)
yan*_*nko 189
它是这样的:
<activity android:name=".usual.activity.Declaration" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
Run Code Online (Sandbox Code Playgroud)
And*_*rey 117
使用"AppCompat"库或"Android设计支持库",它有点不同:
在styles.xml中:
<style name="Theme.AppCompat.Translucent" parent="Theme.AppCompat.NoActionBar">
<item name="android:background">#33000000</item> <!-- Or any transparency or color you need -->
<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>
Run Code Online (Sandbox Code Playgroud)
在AndroidManifest.xml中:
<activity
android:name=".WhateverNameOfTheActivityIs"
android:theme="@style/Theme.AppCompat.Translucent">
...
</activity>
Run Code Online (Sandbox Code Playgroud)
Dee*_*ami 35
在清单中声明您的活动,如下所示:
<activity
android:name=".yourActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
Run Code Online (Sandbox Code Playgroud)
并为您的布局添加透明背景.
Jig*_*dya 27
将半透明主题分配给要在项目的Android清单文件中透明的活动:
<activity
android:name="YOUR COMPLETE ACTIVITY NAME WITH PACKAGE"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
Run Code Online (Sandbox Code Playgroud)
Cam*_*gny 15
我想补充一点,因为我也是一名新的Android开发人员.接受的答案很棒,但我遇到了一些麻烦.我不知道如何在colors.xml文件中添加颜色.这是应该怎么做:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="class_zero_background">#7f040000</color>
<color name="transparent">#00000000</color>
</resources>
Run Code Online (Sandbox Code Playgroud)
在我原来的colors.xml文件中,我有标签"drawable":
<drawable name="class_zero_background">#7f040000</drawable>
Run Code Online (Sandbox Code Playgroud)
所以我也为颜色做了这个,但我不明白"@ color /"引用意味着在XML中寻找标签"color".我认为我也应该提到这一点,以帮助其他人.
and*_*hay 15
我只是android:theme="@android:style/Theme.Translucent"在清单中添加了活动标签,就在2.3.3上实现了它.
关于较低版本,我不知道......
Gem*_*Gem 15
在我的情况下,我必须根据一些条件在java中设置运行时的主题.所以我创建了一个主题风格(类似于其他答案):
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.Transparent" parent="android:Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
然后在Java中我将它应用于我的活动:
@Override
protected void onCreate(Bundle savedInstanceState) {
String email = getIntent().getStringExtra(AppConstants.REGISTER_EMAIL_INTENT_KEY);
if (email != null && !email.isEmpty())
{
// We have the valid email ID, no need to take it from user, prepare transparent activity just to perform bg tasks required for login
setTheme(R.style.Theme_Transparent);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
}
else
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dummy);
}
Run Code Online (Sandbox Code Playgroud)
请记住一个重点:您必须先调用该setTheme()功能super.onCreate(savedInstanceState);.我错过了这一点并且坚持了2个小时,想到为什么我的主题没有在运行时反映出来.
只需添加
<item name="android:windowBackground">@android:color/transparent</item>
Run Code Online (Sandbox Code Playgroud)
你完成了。
windowIsFloating 错了,这会产生一个 INSET 浮动窗口。
windowContentOverlay 只与阴影有关。
windowIsTranslucent错了,它没有做到,所以你可以看到后面的活动。windowIsTranslucent 仅与动画过渡相关。
backgroundDimEnabled使下面的活动变暗,但是,它在不同的设备上完全有问题。(在某些情况下,除非您使用 windowIsFloating,否则它什么都不做;一般来说,行为完全是错误的/不确定的。)
colorBackgroundCacheHint 除了在非常旧的设备上是无关紧要的,无论如何默认值为空。
小智 7
只需让活动背景图片透明即可.或者在XML文件中添加主题:
<activity android:name=".usual.activity.Declaration" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
Run Code Online (Sandbox Code Playgroud)
在onCreate函数中,在setContentView下面添加以下行:
getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
Run Code Online (Sandbox Code Playgroud)
小智 6
我找到的最简单的方法是将AndroidManifest中的活动主题设置为android:theme="@android:style/Theme.Holo.Dialog".
然后在activity的onCreate方法中,调用getWindow().setBackgroundDrawable(new ColorDrawable(0));.
除了上述答案:
避免 android Oreo 相关的活动崩溃
<style name="AppTheme.Transparent" parent="@style/Theme.AppCompat.Dialog">
<item name="windowNoTitle">true</item>
<item name="android:windowCloseOnTouchOutside">false</item>
</style>
<activity
android:name="xActivity"
android:theme="@style/AppTheme.Transparent" />
Run Code Online (Sandbox Code Playgroud)
对于对话框活动,我使用以下代码:
getWindow().getDecorView().setBackgroundResource(android.R.color.transparent);
Run Code Online (Sandbox Code Playgroud)
但是,您还需要将活动中的主视图设置为不可见。否则,背景将是不可见的,而其中的所有视图都将是可见的。
如果您正在使用,AppCompatActivity请将其添加到styles.xml
<style name="TransparentCompat" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<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>
Run Code Online (Sandbox Code Playgroud)
在manifest文件中,您可以将此主题添加到活动标签中,如下所示
android:theme="@style/TransparentCompat"
Run Code Online (Sandbox Code Playgroud)
欲了解更多详细信息,请阅读这篇文章
| 归档时间: |
|
| 查看次数: |
415040 次 |
| 最近记录: |