草庐IT

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

coder 2023-05-07 原文

我希望能够在使用 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 - Android PopupWindow Activity 时背景模糊或变暗的更多相关文章

  1. ruby-on-rails - 使用 Sublime Text 3 突出显示 HTML 背景语法中的 ERB? - 2

    所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择

  2. ruby-on-rails - 使用 Rmagick 或 ImageMagick 在背景上放置标题 - 2

    我有一张背景图片,我想在其中添加一个文本框。我想弄清楚如何将标题放置在其顶部的正确位置。(我使用标题是因为我需要自动换行功能)。现在,我只能让文本显示在左上角,但我需要能够手动定位它的开始位置。require'RMagick'require'Pry'includeMagicktext="Loremipsumdolorsitamet"img=ImageList.new('template001.jpg')img 最佳答案 这是使用convert的ImageMagick命令行的答案。如果你想在Rmagick中使用这个方法,你必须自己移植

  3. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  4. ruby-on-rails - 使用 Rails (Tire) 和 ElasticSearch 进行模糊字符串匹配 - 2

    我有一个Rails应用程序,现在设置了ElasticSearch和Tiregem以在模型上进行搜索,我想知道我应该如何设置我的应用程序以对模型中的某些索引进行模糊字符串匹配。我将我的模型设置为索引标题、描述等内容,但我想对其中一些进行模糊字符串匹配,但我不确定在何处进行此操作。如果您想发表评论,我将在下面包含我的代码!谢谢!在Controller中:defsearch@resource=Resource.search(params[:q],:page=>(params[:page]||1),:per_page=>15,load:true)end在模型中:classResource'Us

  5. Ruby:模糊测试所有 unicode 字符(UTF8/编码/字符串操作) - 2

    我无法遍历整个unicode字符范围。我到处找...我正在构建一个模糊器,并希望将所有unicode字符(一次一个)嵌入到一个url中。例如:http://www.example.com?a=\uff1c我知道有一些内置工具,但我需要更多的灵active。如果我能像下面那样做:"\u"+"ff1c"那就太好了。这是我得到的最接近的:char="\u0000"...#withiniterationchar.succ!...但在字符"\u0039"之后,即数字9,我将得到"10"而不是":" 最佳答案 您可以使用pack将数字转换为UT

  6. ruby-on-rails - 在所有页面上使用 Prawn 的背景图像 - 2

    我在View中有这段代码prawn_document(:page_size=>"A4",:top_margin=>80,:bottom_margin=>40,:background=>"public/uploads/1.png")do|pdf|creation_date=Time.now.strftime('%d-%m-%Y')posts=@posts.eachdo|post|pdf.pad(10)dopdf.textpost.titlepdf.textpost.textendendpdf.page_count.timesdo|i|pdf.go_to_page(i+1)pdf.draw

  7. ruby - 256 种颜色,前景和背景 - 2

    这是两个脚本的故事,与previousquestion有关.这两个脚本位于http://gist.github.com/50692.ansi.rb脚本在所有256种背景颜色上显示所有256种颜色。ncurses.rb脚本显示所有256种前景颜色,但背景显示基本的16种颜色,然后似乎循环显示各种属性,如闪烁和反向视频。那么是什么给了?这是ncurses中的错误,它使用带符号的整数来表示颜色对吗?(即'tputcolors'表示256但'tputpairs'表示32767而不是65536)似乎如果是这种情况,颜色对的前半部分会正确显示但后半部分会重复或进入属性作为int包裹。

  8. ruby 电子表格行背景色 - 2

    我正在尝试使用“电子表格”解析Excel电子表格。如何获取每一行的背景颜色? 最佳答案 book=Spreadsheet::Workbook.newsheet=book.create_worksheet:name=>'Name'format=Spreadsheet::Format.new:color=>:blue,:pattern_fg_color=>:yellow,:pattern=>1sheet.row(0).set_format(0,format)#forfirstcellinfirstrow或sheet.row(0).def

  9. ruby-on-rails - 使用 Barby gem 打印 - 条码图像模糊 - 2

    有人使用Barbygem(https://github.com/toretore/barby)来生成和打印条形码吗?我正在生成和打印png条形码文件,但它们变得模糊不清。请注意,生成的PNG文件看起来很棒,即使在放大条形图时也是如此,但打印时边缘模糊。我正在使用同一台打印机打印与我在其他地方获得的相同尺寸和格式的条形码,它们看起来漂亮而清晰。这是我正在使用的代码,以防有人对我如何让它看起来更好有任何想法。它目前无法使用,因为扫描仪无法读取它。我注意到创建的png有72dpi,似乎没有办法让它更高。这可能与此有关,也可能无关。require'barby'require'barby/bar

  10. css - 如何让我的背景图片只出现在 rails 4 的一页上? - 2

    我有一张背景图片,我无法只停留在一页上。我制作了一个带有一个主视图的欢迎Controller来显示它。我也在预编译我的Assets。背景显示得很好,但我的目标是只在我的home.html.erbView中显示背景图像。欢迎/home.html.erb:"lang="">title欢迎Controller:classWelcomeController样式表/welcome.css.scss:body{background:{image:asset-url("image.jpg");}}我的应用程序布局中有以下内容:在config/initializers/assets.rb中:Rails

随机推荐