Строка состояния не исчезнет после отложенного метода обработчика - PullRequest
0 голосов
/ 12 июня 2019

Я создаю приложение для видеоплеера. Когда пользователь открывает действие VideoPlayer: я хочу скрыть строку состояния через 200 мс. Я использую Handler. Также пользователь может прикоснуться к виду поверхности, чтобы скрыть / показать строку состояния.

Проблема: первый раз, когда активность открывается, строка состояния исчезает через 200 мс, но когда пользователь взаимодействует с видом поверхности, чтобы показать / скрыть строку состояния, затем после того, как пользователь показывает строку состояния, она больше не будет скрываться.

VideoPlayer.class

public class VideoPlayer extends AppCompatActivity implements SurfaceHolder.Callback{

  private SurfaceView surfaceView;
  private SurfaceHolder surfaceHolder;
  private boolean ISFULLSCREEN;

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
surfaceView =findViewById(R.id.surface);
surfaceHolder=surfaceView.getHolder();
        surfaceHolder.addCallback(VideoPlayer.this);


surfaceView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(ISFULLSCREEN) // if fullscreen true
                {
                    exitFullScreen();
                    goFullScreen();
                }
                else
                {
                    goFullScreen();
                }
            }
        });

}

     private void goFullScreen() //Hides statusbar and navigation bar after 200ms
    {
        Handler handler=new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                ISFULLSCREEN=true;
                View decorView = getWindow().getDecorView();
           // Hide the status bar.
                int uiOptions = 
     View.SYSTEM_UI_FLAG_FULLSCREEN|View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
                decorView.setSystemUiVisibility(uiOptions);
            }
        }, 200);


    }
    private void exitFullScreen() // shows statusbar
    {
        ISFULLSCREEN=false;
        View decorView = getWindow().getDecorView();
        // Show Status Bar.
        int uiOptions = View.SYSTEM_UI_FLAG_VISIBLE;
        decorView.setSystemUiVisibility(uiOptions);
    }

}

Любая помощь будет оценена

...