如何在活动变得模糊时使活动变得模糊?

时间:2017-12-11 14:09:06

标签: android android-activity kotlin android-lifecycle

我在网上找不到任何有关此类功能的信息。所以基本上我想要实现的是当用户点击Home按钮(换句话说,onPause()方法调用时)我想让后面的activity隐藏或模糊不清安全

here is what I meant

我希望这不只是一个活动,而是每个活动,最简单的方法是什么?

3 个答案:

答案 0 :(得分:1)

您可以尝试在“活动”的所有内容上放置“查看”,然后聆听onPause()以切换其可见性。例如,您可以使此视图具有纯色背景,并在中心显示应用徽标。

每次暂停应用时都会将其显示,并将其隐藏在onResume()上。我认为这可能模仿Paypal和其他一些应用程序所做的事情。

答案 1 :(得分:1)

首先,调用生命周期方法并不起作用,因为它们在活动发生变化时被调用等等。

所以这就是我解决这个问题的方法:

我创建了一个从LifecycleObserver扩展的类(这是非常新的)

class ForegroundBackgroundListener : LifecycleObserver {

@OnLifecycleEvent(Lifecycle.Event.ON_START)
    fun appStarted() {
        Timber.d("App is on foreground")
       //Todo visibility: gone
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    fun appStopped() {
        Timber.d("App is on background")
        //Todo visibility: visible
}

然后在我的Application类中:

class ForegroundBackgroundApp : Application() {

    private lateinit var appObserver: ForegroundBackgroundListener

        override fun onCreate() {
            super.onCreate()

            ProcessLifecycleOwner.get()
                    .lifecycle
                    .addObserver(
                            ForegroundBackgroundListener()
                                    .also { appObserver = it })
        }
    }

如您所见,我可以检测前景/背景变化并做相应的事情。

答案 2 :(得分:0)

这个答案会冒风险,因为我不是百分之百的android以这种方式处理背景堆栈,但我相信活动的背景“图像”是作为应用程序的截图在onPause之后进入后台的调用。因此,基本上您应该做的就是在应用程序退出到背景之前模糊应用程序的当前状态,并且背景图像应该模糊。或者,如果模糊所有元素过于沉重或不可接受,也许你可以使用你的应用程序的ss,以模态(全屏模态)显示它并模糊ss本身。

以下是一些先进的模糊技术: http://trickyandroid.com/advanced-blurring-techniques/

Or as answered here (bitmap blur)