【问题标题】:android full screen mode(ICS), first touch shows the navigation barandroid全屏模式(ICS),第一次触摸显示导航栏
【发布时间】:2019-08-05 06:45:49
【问题描述】:

在我的视频播放应用程序中,我使用这个标志:SYSTEM_UI_FLAG_HIDE_NAVIGATION 使导航栏消失,但是当我触摸屏幕时,导航栏出现,第一次触摸后,我的触摸事件和其他事件工作正常。

我的问题是我怎样才能接管第一次触摸?

【问题讨论】:

    标签: android


    【解决方案1】:

    你不能真正接管第一个事件。您可以实现View.OnSystemUiVisibilityChangeListener 并在导航栏再次显示或隐藏时收到通知,然后根据其当前状态在第一次触摸时执行您想要的操作,如果可能的话。

    但是,如SYSTEM_UI_FLAG_HIDE_NAVIGATION 的文档中所述,您无法完全接管第一次触摸:

    有一个限制:因为导航控件非常重要,所以最少的用户交互会导致它们立即重新出现。发生这种情况时,此标志和 SYSTEM_UI_FLAG_FULLSCREEN 都将自动清除,以便两个元素同时重新出现。

    【讨论】:

      【解决方案2】:

      对于遇到此帖子的任何人,如果您的意图是隐藏导航/状态栏并且在您触摸屏幕时不让它重新出现,请查看此处描述的不同“沉浸式”配置:@987654321 @

      例如:

      currentActivity?.window?.decorView?.systemUiVisibility = View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY or
                          View.SYSTEM_UI_FLAG_FULLSCREEN or
                          View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
      

      无论用户与屏幕进行任何交互,这都会有效地将您的屏幕置于“全屏”模式

      要再次显示导航/状态栏,只需将其改回:

      currentActivity?.window?.decorView?.systemUiVisibility = View.SYSTEM_UI_FLAG_VISIBLE
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多