如何与半透明Android应用程序背后的元素进行交互?

use*_*332 13 android

我已经找到了如何为我的Android应用程序创建半透明背景,但到目前为止我还没有找到如何与其背后的内容进行交互(例如主屏幕).

这篇文章帮助我让应用程序视图半透明.

如何允许用户与半透明应用程序背后的内容进行交互? 这个应用程序是一个很好的应用程序示例,允许这是"透明屏幕"Android应用程序.

blu*_*con 13

理解视图堆叠的一种非常简单的方法是拿一本书(任何一本书).将每个页面视为一个视图.

能见度

  • 当您打开书籍时,您可以看到一个页面(主视图 - VISIBLE)
  • 当您转动当前页面时,您可以看到下一页(INVISIBLE- 主视图以显示下一个视图.请记住,您只是隐藏视图,如果您将可见性设置GONE为相当于撕毁当前页面以查看下一页.)

触摸场景

  • 假设您的第一页是蜡页(半透明页面类似于您的半透明视图),因此您可以看到底层页面
  • 当您尝试触摸第二页上的图形时,您正在触摸第一页,尽管您可以在第二页上看到该图形.无法通过第一页触摸第二页上的图形.

不要灰心,因为这是一个你将要处理的观点而不是纸张,你仍然可以做你想做的事:)

  • 实现View.OnTouchListener您的两个视图
  • 对于半透明视图,您可以获得任何触摸事件,并返回FALSE方法onTouch
  • Android会将触摸事件传递给您的基础视图.


Shi*_*ade 12

我得到了答案.getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE); 在第二个顶级活动中添加onCreate中的行(这是透明的).

以上解决方案有问题.使用上面的整个窗口后,将触摸传递给背景.因此,如果您想要完全控制,那么最好扩展布局,例如Framelayout并覆盖'onTouchEvent'并使用event.getX()和event.getY()方法获取触摸位置,并在您想要传递触摸事件的地方返回false.它将传递给父视图.

  • 大.这允许透明活动也影响"desktop\home" (2认同)