我已经找到了如何为我的 android 应用程序创建半透明背景,但到目前为止我还没有找到如何与它背后的内容(例如主屏幕)进行交互。
这篇文章帮助我使应用程序视图半透明。
如何让用户与半透明应用程序背后的内容进行交互? 这个应用程序是一个很好的例子,它允许这是“透明屏幕”Android 应用程序。
理解视图堆叠的一个非常简单的方法是拿一本书(任何书)。将每个页面视为一个视图。
能见度
VISIBLE
)INVISIBLE
- Main View 显示下一个视图。记住你只是隐藏视图,如果你设置可见性到GONE
这里就相当于撕掉当前页面来查看下一页.)触控场景
不要灰心,因为这是您将要处理的观点而不是论文,您仍然可以做您想做的事情:)
View.OnTouchListener
为您的两个视图实施FALSE
在方法中返回onTouch
我得到了答案。getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
在第二个顶级活动的 onCreate 中添加行(这是透明的)。
上面的解决方案有问题。使用以上整个窗口后,将触摸传递到背景。因此,如果您想要完全控制,那么最好扩展一个布局,例如 Framelayout 并覆盖“onTouchEvent”,并使用 event.getX() 和 event.getY() 方法获取触摸位置,并在您想要传递触摸事件的地方返回 false。它将被传递给父视图。
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 未设置),也允许将窗口外的任何指针事件发送到其后面的窗口。否则它将消耗所有指针事件本身,无论它们是否在窗口内。