【发布时间】:2017-10-01 12:06:00
【问题描述】:
我有一个主题为@style/Theme.AppCompat.NoActionBar.Translucent 的半透明活动
由于这个Activity 是完全透明的,所以用户不知道Activity 的存在。因此,当用户按下返回按钮时,默认行为应该是无论用户上次打开哪个Activity,都应该接受返回按钮事件。
但由于 Translucent Activity 位于顶部,因此它接受了该事件,并且在用户看来,后退按钮在第一次尝试时不起作用。有什么方法可以在onBackPressed() 之后几毫秒发送一个返回键事件,或者我可以将我的Activity 设置为根本不听关键事件?有一些像 FLAG_NOT_TOUCHABLE 这样的标志告诉应用程序不想被触摸,但这对我来说在后退按钮上不起作用。
请不要建议我使用Service,因为我绝对有必要使用Activity,而且它也应该是透明的。
【问题讨论】:
-
如果您不覆盖后按,则默认实现是调用 super.onBackPressed 方法!如果您覆盖并且什么都不做,那么用户将不会使用返回键事件离开您的活动。所以这个问题毫秒为我澄清,因为它最容易做到!还有为什么你想要一个透明的活动?有像对话活动这样的替代品吗?
-
我忘记包含该活动是由服务调用的问题。准确地说,是一项无障碍服务。每当用户启动第三方应用程序时,辅助功能服务都会触发并加载我的半透明活动。因此,我希望我的应用程序背后的第三方应用程序能够收听后按。要么这个,要么我的应用程序应该接受事件,然后按前一个应用程序本身的后退按钮,这样用户就不会感觉到它。
-
至于为什么我必须使用Activity:我需要使用mediaprojection API对第三方应用程序进行截图,这需要我调用startActivityForResult()然后等待结果。
-
我怀疑您所需要的是否可行?它看起来很hacky和安全!
标签: android android-activity android-theme