我已经找到了如何为我的Android应用程序创建半透明背景,但到目前为止我还没有找到如何与其背后的内容进行交互(例如主屏幕)。
This post帮助我让应用视图变得半透明。
如何允许用户与半透明应用背后的内容进行互动? This app是应用程序的一个很好的例子,它允许这是“透明屏幕”Android应用程序。
答案 0 :(得分:13)
理解视图堆叠的一种非常简单的方法是拿一本书(任何书)。将每个页面视为一个视图。
可见性
VISIBLE
)INVISIBLE
- 主视图以显示下一个视图。请记住,如果您将可见性设置为GONE
,则只隐藏视图相当于撕毁当前页面以查看下一页。)触摸场景
不要灰心,因为这是一个你要处理的观点,而不是你仍然可以做你想做的纸张。)
View.OnTouchListener
FALSE
onTouch
答案 1 :(得分:12)
我得到了答案。
添加行getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
in onCreate在第二个顶级活动中(这是透明的诀窍)。
以上解决方案存在问题。使用上面的整个窗口后,将触摸传递给背景。因此,如果您想要完全控制,那么最好扩展布局,例如Framelayout并覆盖'onTouchEvent'并使用event.getX()和event.getY()方法获取触摸位置,并在想要传递触摸事件的位置返回false。它将被传递给父视图。
答案 2 :(得分:0)
FLAG_NOT_TOUCH_MODAL将以最少的代码完成您想要的工作。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
...
setContentView(R.layout.my_activity_view);
...
}
公共静态最终int FLAG_NOT_TOUCH_MODAL
窗口标记:即使该窗口可聚焦(其{@link 未设置FLAG_NOT_FOCUSABLE),允许将窗口外部的任何指针事件发送到其后面的窗口。否则会 消耗所有指针事件本身,而不管它们是否 在窗口内部。