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

我希望能够在使用 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/

相关文章:

android - 如何在没有硬件加速的情况下在 Windows 8 上为 API 21 和 19

android - 如何使用它自己的操作按钮关闭 Snackbar?

android - 何时清除 Android 中的缓存目录?

android - 无法从浏览器下载安装 APK

android - 如何使用 Android Studio 查看共享首选项文件?

android - Kotlin 错误 : Could not find org. jetbrain

android - 如何将 Activity 带到前台(堆栈顶部)?

android - transformClassesAndResourcesWithProguard

android - 如何遍历共享偏好的所有键?

android - NoSuchFieldError : No static field listV