2014-02-28 8 views
1

내 앱에서 "몰입 형 모드"를 사용하고 싶습니다. 나는 문서를 다음 제대로 작동하고있다 : 이것은 몰입 형 전체 화면 모드를 활성화안 드 로이드의 몰입 형 모드 투명도 만

private View mDecorView; 
... 

    @Override 
     public void onWindowFocusChanged(boolean hasFocus) { 
      super.onWindowFocusChanged(hasFocus); 
      if (hasFocus) { 
       mDecorView.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_STICKY); 
      } 
     } 
... 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.test); 
     mDecorView = getWindow().getDecorView(); 

    } 

. 내 문제는 내가 Trello 응용 프로그램과 같은 결과 만 FLAG_IMMERSIVE_STICKY 사용하고자하는 것입니다 :

enter image description here

막대는 투명하고 항상 볼 수 있습니다. 정보와 다양한 조합을 검색했지만 원하는 결과를 얻었습니다. 모든 도움에 감사드립니다.

감사합니다.

답변

0

설명서에는 onCreate 메서드의 활동에 대한 UI 플래그를 설정해야한다고 명시되어 있습니다. - https://developer.android.com/training/system-ui/immersive.html

이 두 가지 방법을 구현하고에서 onCreate 방법

// This snippet hides the system bars. 
private void hideSystemUI() { 
    // Set the IMMERSIVE flag. 
    // Set the content to appear under the system bars so that the content 
    // doesn't resize when the system bars hide and show. 
    mDecorView.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 // hide nav bar 
      | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar 
      | View.SYSTEM_UI_FLAG_IMMERSIVE); 
} 

// This snippet shows the system bars. It does this by removing all the flags 
// except for the ones that make the content appear under the system bars. 
private void showSystemUI() { 
    mDecorView.setSystemUiVisibility(
      View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
      | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
      | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 
} 

이 상태 표시와 내비게이션 바을 숨겨야에 hideSystemUI를 호출합니다. 설명서에 탐색 및 상태 표시 줄이 모두 숨겨져 있어야한다고 나와 있습니다. 나를 위해 StatusBar를 그냥 숨 깁니다.

이 정보가 도움이되기를 바랍니다.

+0

인스턴스화 된 mDecorView는 무엇입니까? –

0

당신이 찾고있는 플래그는 다음과 같습니다

  • WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
  • WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION

또한 사용하여 테마 플래그를 사용할 수 있습니다 :

<item name="android:windowTranslucentStatus">true</item> 
<item name="android:windowTranslucentNavigation">true</item> 

앱에서 작업 표시 줄을 사용하는 경우 Trello 앱처럼 표시되지 않습니다. Trello 앱처럼 보이게하려면 몇 가지 트릭/해킹을 사용해야합니다. 앱에서 작업 막대를 사용하는 경우 시간을 절약하고 대신 this library *을 사용할 수 있습니다. 말할 필요도없이 이것은 API 19+에서만 작동합니다.

* 개인적으로, 나는 액션 바 색상을 확장하기 위해 투명 시스템 모음의 사용을 보증하지 않습니다. 시스템 바 밑에 표시 할 내용이 있거나 전체 화면으로 작업 할 경우에만 사용해야한다고 생각합니다.