ICS中的TYPE_SYSTEM_OVERLAY

时间:2012-03-11 15:20:10

标签: android android-4.0-ice-cream-sandwich layoutparams android-windowmanager

在Honeycomb中,我能够使用TYPE_SYSTEM_OVERLAY创建系统覆盖,并使用FLAG_WATCH_OUTSIDE_TOUCH接收触摸。

现在ICS改变了一些东西。我仍然可以创建系统覆盖,但我无法接触。

现在,我可以使用TYPE_SYSTEM_ALERT创建相同的内容并获取触摸,但它只是捕获touchevents,而不是像在Honeycomb中那样传递它们。

有什么想法吗?

亲切的问候

2 个答案:

答案 0 :(得分:24)

在设置LayoutParams时创建叠加视图 不要将类型设置为TYPE_SYSTEM_OVERLAY

而是将其设置为TYPE_PHONE

使用以下标志:

FLAG_NOT_TOUCH_MODAL

FLAG_WATCH_OUTSIDE_TOUCH

FLAG_NOT_TOUCH_MODAL<<我发现这个非常重要。没有它,重点是叠加和软键(主页,菜单等)按下不会传递给下面的活动。

答案 1 :(得分:7)

你描述的一切都是真的。它可能是为了加强安全性,因为前者的行为是攻击攻击的来源。我最近写了关于这一变化的a blog post

  

有什么想法吗?

不要使用它们中的任何一个。