为什么MediaController会影响隐藏导航栏?

时间:2014-09-16 15:14:50

标签: android android-viewpager

我的应用包含一个显示图片和视频的ViewPager。应用程序应该在水龙头上进入沉浸式视图,并在3秒后从水龙头中取出沉浸式视图。我还希望状态栏始终隐藏。这主要是有效的,但是......

我使用的是Android Studio中生成的SystemUIHider类的变体。我创建了一个名为SystemUIHiderKitKat的新类,它使用这些标志。 单击屏幕将显示导航和操作栏(而不是状态栏)。在3秒内单击将隐藏导航和状态栏。等待超过3秒将自动隐藏导航和操作栏。

条形图的视频按预期运行,但没有MediaController:Working

切换MediaController时,条形视频无法正常工作:Not Working

  mShowFlags = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
        | View.SYSTEM_UI_FLAG_FULLSCREEN;

  mHideFlags = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
        | View.SYSTEM_UI_FLAG_FULLSCREEN
        | View.SYSTEM_UI_FLAG_LOW_PROFILE
        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
        | View.SYSTEM_UI_FLAG_IMMERSIVE;

  mTestForHiddenFlags = View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;

我的VideoView和MediaController都是自定义FrameLayout类的成员

public class MyVideoView extends FrameLayout 
{
  setOnSystemUiVisibilityChangeListener(new OnSystemUiVisibilityChangeListener()
  {
     @Override
     public void onSystemUiVisibilityChange(int visibility)
     {
        final int hidden = SYSTEM_UI_FLAG_LOW_PROFILE | SYSTEM_UI_FLAG_HIDE_NAVIGATION | SYSTEM_UI_FLAG_FULLSCREEN;
        if ((hidden & visibility) != 0) {
           m_mediaController.hide();                  //   A
        }
        else {
           m_mediaController.show();              //    B
        }
     }
  });

如果我评论A行和B行,一切都很完美("工作"视频)。如果没有注释掉A行和B行,那么当我单击Action Bar时会隐藏,但导航栏没有(" Not Working" video)。在一两秒内,delayedHide(int delayMillis)方法被调用,然后导航栏会隐藏(!!)。现在,这让我感到困惑,因为调用相同的hide()方法并使用与第一次调用相同的标志值调用mAnchorView.setSystemUiVisibility(mHideFlags)(显然)

0 个答案:

没有答案