android 투명 상태 표시줄을 실현하는 가장 간단한 방법

2572 단어
이 원본을 쓰십시오: 회사는 투명한 상태 표시줄을 실현해야 합니다. 상태 표시줄 색깔은 페이지 전환에 따라 바뀌고 가상 버튼은 변하지 않습니다.OK, 이 수요를 얻었을 때 so easy!github 열기!statusbar를 검색해서 이 3k의statusbar를 선택했습니다!항목을 가져오면,
  • 4.4에서 뛰기 시작하면 완벽해!
  • 6.0의 기계를 가지고 뛰어라. 뭐야: 가상 버튼이 어떻게 밑에 버튼을 가려!못 참아!!!!해결 방법:
  • 저자readme에 따라 수정!역시 안 돼!원본 수정, 안돼!!!슬프기 그지없다!
  • 구글,baidu 모드 오픈!이것저것 고쳐 말하면서 실천한 후에 내 마음은 무너졌다.역시 안 돼!마지막으로 Goolin 대협에게서 방법을 찾습니다.
    if (hasFocus && Build.VERSION.SDK_INT >= 19) {
      View decorView = getWindow().getDecorView();
      decorView.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);
     }
    

  • 기왕 수요가 상태막대만 변하는 이상 (이하 방식api는 반드시 >=21)
  • 우선 정리: window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
  • 및 전체 화면 유지: window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
  • 에 flag:window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);를 추가해야 상태막대에 색을 설정할 수 있습니다. 마지막으로 호출window.setStatusBarColor(Color.TRANSPARENT);을 투명하게 설정하면 됩니다
  • 4.4의 경우 없음window.setStatusBarColor(Color.TRANSPARENT);그래서: window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);마지막으로 하나의 방법을 형성한다.
    public static void setTranslucentStatus(Activity activity){
        Window window = activity.getWindow();
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
          window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.setStatusBarColor(Color.TRANSPARENT);
        }else if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){
            window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        }
    } 
    

    그리고 필요한 액티비티나 베이스 액티비티.
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Utils.setTranslucentStatus(this);
    }
    

    setContentView(R.layout.activity_main); 전에!호출
    이 방법은 상태 표시줄만 전체 화면으로 투명화 처리하고 가상 버튼과 관련이 없습니다!필요한 친구가 있으면 가져가도 돼!

    좋은 웹페이지 즐겨찾기