2014-10-01 1 views
1

this document에 설명 된대로 전체 화면 Android 앱에서 탐색 바를 숨기려고합니다. 이 방법은 세로 방향 (*)으로 만 작동합니다. 앱이 가로 방향으로 회전하면 OnSystemUiVisibilityChangeListener이 중지됩니다. 그런 다음 앱이 다시 세로로 회전하면 OnSystemUiVisibilityChangeListener이 다시 시작됩니다. 이 코드를 onCreate()onResume()에서 호출하려고했는데 효과가 같습니다. 풍경에 앱을 풍경에 시작하면, 리스너 화재는 풍경에 앱이 세로에서 시작하는 경우, 리스너는 화재 -Android OnSystemUiVisibilityChangeListener가 세로로 만 실행됩니다.

final View decor=getWindow().getDecorView(); 
decor.setOnSystemUiVisibilityChangeListener (new View.OnSystemUiVisibilityChangeListener() { 
    public void onSystemUiVisibilityChange(int visibility) { 
     android.util.Log.d("d", "onSystemUiVisibilityChange"); 
     new Handler().postDelayed(new Runnable() { 
      public void run(){ 
       decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); 
      } 
     }, 1500); 
    } 
}); 
decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); 

(*)는 응용 프로그램이 시작됩니다 어떤 방향으로 작동합니다.

+0

이것은 실제 전화로 4.4.4를 실행 중입니다. 4.0을 실행하는 에뮬레이터에서 위의 코드는 예상대로 작동합니다. – iter

답변

1

방향을 변경 한 후에 다시 설정하십시오. 활동의 Manifest 파일에서 android : configChanges = "orientation"을 사용하십시오.

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    setContentView(R.layout.my_layout); 
    final View decor=getWindow().getDecorView(); 
    decor.setOnSystemUiVisibilityChangeListener (new View.OnSystemUiVisibilityChangeListener() { 
     public void onSystemUiVisibilityChange(int visibility) { 
      android.util.Log.d("d", "onSystemUiVisibilityChange"); 
      new Handler().postDelayed(new Runnable() { 
       public void run(){ 
        decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); 
       } 
      }, 1500); 
     } 
    }); 
    decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); 

    // and here comes the other initializations you have done in the onCreate method. 
} 
관련 문제