스마트기기개발관련/안드로이드 개발

[android] 안드로이드 android 상태바 상태, 투명, 색상 관련

AlrepondTech 2016. 7. 28. 13:10
반응형

 

 

 

=================================

=================================

=================================

 

 

 

 

 

 

출처: http://m.blog.daum.net/creazier/15310030

 

안드로이드 하단 네비게이트 - 시스템 바 (홈버튼, 백버튼,옵션버튼) 숨기기

 

버전에 따라서 좀 다르게 해야합니다.

 

 void hideSystemBar()
{
      if (Build.VERSION.SDK_INT >= 19)
      {
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 );

}
else
{
       // getWindow().getDecorView().setSystemUiVisibility(View.GONE);
      getWindow().getDecorView().setSystemUiVisibility
                             ( View.SYSTEM_UI_FLAG_LOW_PROFILE | 
                              View.SYSTEM_UI_FLAG_HIDE_NAVIGATION );

}
}


 

팝업이나 다이얼로그가 표시될때는 하단에 바가 자동으로 표시됩니다.

표시된 이후에는 자동으로 숨겨지지 않으므로 

 

 public void onWindowFocusChanged(boolean hasFocus)
 {
        // super.onWindowFocusChanged(hasFocus);
        // System.out.println("focus : " +  hasFocus);
        if (hasFocus)
        
         hideSystemBar();
        }
 }


위처럼 메서드를 오버라이드 하여 처리


하단이 눌려서 시스템바가 표시되는경우는 

 

 getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(
          new onSystemUiVisibilityChangeListener()

          {
              @Override
                  public void onSystemUiVisibilityChange(int visibility)
                  {
                        // System.out.println("focus  onSystemUiVisibilityChange " +  visibility);
                        if ((visibility & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0) {
                            hideSystembar(1000);
                        }
                  }
          }
 );

 

위처럼 리스너로 처리한다.

 

 

 

 

반응형

 

728x90

 

 

 

=================================

=================================

=================================

 

 

 

출처: http://outliers.tistory.com/entry/Tips-Status-Bar-%EC%83%89%EC%83%81-%EC%A7%80%EC%A0%95-%ED%88%AC%EB%AA%85%EC%B2%98%EB%A6%AC

 

Status Bar 색상 지정

<resources>
  <!-- inherit from the material theme -->
  <style name="AppTheme" parent="android:Theme.Material">
    <!-- Main theme colors -->
    <!--   your app branding color for the app bar -->
    <item name="android:colorPrimary">@color/primary</item>
    <!--   darker variant for the status bar and contextual app bars -->
    <item name="android:colorPrimaryDark">@color/primary_dark</item>
    <!--   theme UI controls like checkboxes and text fields -->
    <item name="android:colorAccent">@color/accent</item>
  </style>
</resources>

Status Bar 투명처리

<resources>
<!-- inherit from the material theme -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">">@android:color/transparent</item>
<item name="android:windowTranslucentStatus">true</item>
</style>
</resources>

 

 

=================================

=================================

=================================

 

 

출처: https://plus.google.com/wm/1/+%EB%82%A8%EB%91%90%EC%A1%B0/posts/ZGTEu8FRgpJ

 

흠 상태바를 완전 투명으로 주고싶은데요 제가 타켓 api를 21로 해놔서 그런지 몰라도 
   <item name="android:windowTranslucentStatus">true</item>
        <item name="android:statusBarColor">@android:color/transparent</item>
이걸줘도 약간 반투명 느낌이 나네요 흠 
아님 타켓 api를 좀 낮춰서 
Theme.Holo.NoActionBar.TranslucentDecor
Theme.Holo.Light.NoActionBar.TranslucentDecor
이런놈들을 사용해야하는걸까영?

 

 

 
완전 투명은 안될건데요...
기본이 반투명일거에요
 
 
SeongUg Jung
 
2015. 2. 4.
 
 
 
아? 제 기기가 4.4 라 그런가...
상단 살짝 그라데이션 들어가 있는데요...
 
조남두
 
2015. 2. 4.
 
 
 
+SeongUg Jung  제폰이 롤리팝이라서 제폰 스샷이에여 저기보면 그라는 안들어간거같아서영 ㅠㅠ
 
김기완
 
2015. 2. 4.
+
2
3
2
 
 
 
젤리빈부터는 WindowInsets(https://developer.android.com/reference/android/view/WindowInsets.html) 로 뷰를 StatusBar 및 NavigationBar 아래로 밀어넣을 수 있어요 킷캣부터 위에 적어주신 그라데이션 들어간 StatusBar 하고는 달라요 아마 저기는 버전 분기 태워서 각 버전마다 다르게 했을겁니다. 예제가 좀 부족한데 구현 어떻게 하시는지 살펴보시려면 DrawerLayout 소스코드 보시고  해당글 참조하시면 될거 같습니다. http://androidhuman.tistory.com/560
 
김기완
 
2015. 2. 4.
+
3
4
3
 
 
 
테스트 해보니 WindowInsets 받아올 필요도 없고 그냥

rootview.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);

루트뷰에 View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 속성넣어주고 themes.xml 에 <item name="android:statusBarColor">@android:color/transparent</item>줘도충분하네요 버전분기만 킷캣/롤리팝 잘 나눠서 구성해주시면 될거 같습니다. (롤리팝에서는 <item name="android:windowTranslucentStatus">true</item> 이 속성이 빠져야 오버레이가 생기지 않음)
 
조남두
 
2015. 2. 5.
 
 
 
+김기완 오 감사합니다 꾸벅 해봐야겠네여 당장

 

=================================

=================================

=================================

 

 

 

반응형