gpt4 book ai didi

android - Android PopupWindow Activity 时背景模糊或变暗

转载 作者:IT老高 更新时间:2023-10-28 13:11:07 26 4
gpt4 key购买 nike

我希望能够在使用 popup.showAtLocation 显示弹出窗口时模糊或调暗背景,并在 popup.dismiss 时取消模糊/调暗背景> 被调用。

我已尝试将布局参数 FLAG_BLUR_BEHINDFLAG_DIM_BEHIND 应用于我的 Activity ,但这似乎只是在我的应用启动后使背景模糊和变暗。

如何仅使用弹出窗口进行模糊/调暗?

最佳答案

问题是关于 Popupwindow类,但每个人都给出了使用 Dialog 的答案类(class)。如果您需要使用 Popupwindow,那几乎没用类,因为 Popupwindow没有 getWindow()方法。

我找到了一个真正适用于 Popupwindow 的解决方案.它只要求您用于后台 Activity 的 xml 文件的根是 FrameLayout .你可以给Framelayout元素android:foreground标签。这个标签的作用是指定一个可绘制资源,该资源将分层在整个 Activity 之上(也就是说,如果 Framelayout 是 xml 文件中的根元素)。然后,您可以控制前景可绘制对象的不透明度 (setAlpha())。

你可以使用任何你喜欢的drawable资源,但是如果你只是想要一个变暗的效果,在drawable文件夹中创建一个xml文件,文件名是<shape>。标记为根。

<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="#000000" />
</shape>

(有关 shape 元素的更多信息,请参见 http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape)。请注意,我没有在颜色标签中指定使可绘制项目透明的 alpha 值(例如 #ff000000 )。原因是任何硬编码的 alpha 值似乎都会覆盖我们通过 setAlpha() 设置的任何新 alpha 值。在我们的代码中,所以我们不希望这样。但是,这意味着可绘制项目最初是不透明的(实心的,不透明的)。所以我们需要让它在activity的onCreate()中透明化方法。

这是 Framelayout xml 元素代码:

<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainmenu"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:foreground="@drawable/shape_window_dim" >
...
... your activity's content
...
</FrameLayout>

这是 Activity 的 onCreate() 方法:

public void onCreate( Bundle savedInstanceState)
{
super.onCreate( savedInstanceState);

setContentView( R.layout.activity_mainmenu);

//
// Your own Activity initialization code
//

layout_MainMenu = (FrameLayout) findViewById( R.id.mainmenu);
layout_MainMenu.getForeground().setAlpha( 0);
}

最后,使 Activity 变暗的代码:

layout_MainMenu.getForeground().setAlpha( 220); // dim

layout_MainMenu.getForeground().setAlpha( 0); // restore

alpha 值来自 0 (不透明)至 255 (无形的)。当您关闭 Popupwindow 时,您应该取消 Activity 的暗淡。

我没有包含显示和关闭 Popupwindow 的代码,但这里有一个链接,说明如何做到这一点:http://www.mobilemancer.com/2011/01/08/popup-window-in-android/

关于android - Android PopupWindow Activity 时背景模糊或变暗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3221488/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com