2014-12-09 4 views
3

모든 액티비티에 몰입 형 모드를 사용하는 Android 앱이 있습니다. 전체 앱이므로 풀 스크린 앱입니다.Android Immersive Mode Transitions

다른 모든 활동이 확장되는 BaseActivity 클래스가 있습니다. 몰입 나는이 전체 화면을 사용하려면 다음과 같은 호출이 활동 /에서

HelmiBlankActivity : 그것은 좋은 작품 활동에

private boolean apiLowerImmersive = false; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    if(Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { 
     apiLowerImmersive = true; 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    } 

} 


@TargetApi(Build.VERSION_CODES.JELLY_BEAN) 
@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    super.onWindowFocusChanged(hasFocus); 

    if(hasFocus && !apiLowerImmersive) { 
     getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
       | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
       | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
       | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
       | View.SYSTEM_UI_FLAG_FULLSCREEN 
       | View.SYSTEM_UI_FLAG_IMMERSIVE); 
    } 
} 

, 문제는 다음 액션 바/제목 표시 줄 (의도 당) 새로운 활동을 열 때 표시됩니다 짧은 시간 동안 그리고 다시 숨겨져 있습니다. 이것은 다소 느린/버그가있는 것처럼 보입니다.

이 응용 프로그램은 또한 테마를 가지고 : styles.xml : 나는 안드로이드를 적용 시도

<style name="FullscreenTheme" parent="android:Theme.Holo.Light"> 
    <item name="android:windowFullscreen">true</item> 
    <item name="android:windowActionBar">false</item> 
    <item name="android:windowNoTitle">true</item> 
</style> 

: Theme.Holo.Light.NoActionBar뿐만 아니라 - 전환 기간 동안 성공하지. stackoverflow (btw는 훌륭한 커뮤니티이며 많은 문제를 해결해주었습니다) 나 인터넷 어디에서나 찾을 수 없습니다. 도움을 주시면 감사하겠습니다.

답변

2

이 스 니펫을 onCreate() 메서드에 넣으면 이미 숨겨진 상태로 활동이 열립니다.

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
       | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
       | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
       | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
       | View.SYSTEM_UI_FLAG_FULLSCREEN 
       | View.SYSTEM_UI_FLAG_IMMERSIVE); 

이전 SDK에 대한 조건을 추가 할 수도 있습니다. 이 설정으로 얻은 유일한 문제는 막대를 표시하기 위해 아래로 스 와이프하면 다시 숨기지 않는다는 사실입니다.

+0

감사합니다. 막대가 사라지지 않는 문제 : 몇 가지 장치에서만 발생하는 문제에 대한 이유는 무엇인지 찾아 볼 수 없습니다. – gambo

+0

막대를 자동으로 다시 숨기려면 SYSTEM_UI_FLAG_IMMERSIVE 대신 SYSTEM_UI_FLAG_IMMERSIVE_STICKY를 사용해야합니다. – thiagolr