안드로이드 몰입식 상태 표시줄 설계

2432 단어
개술
현재 주류인 App 디자인 스타일은 대부분이 Materail Design에 사용되고 있다. 오늘은 상태 표시줄의 색깔을 바꾸고 상태 표시줄을 투명하게 하는 두 가지 효과를 간단하게 실현하자.
2. 상태 표시줄의 색상 설정 실현
도구 클래스 StatusBarUtils 코드는 다음과 같습니다.
/**
     *        
     *
     * @param activity
     */
    public static void setStatusColor(Activity activity, int color) {
        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
            //            setStatusBarColor
            activity.getWindow().setStatusBarColor(color);
        } else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {
            // 4.4 - 5.0           ,        ,            
            activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
            View view = new View(activity);
            ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, getStatusbarHeight(activity));
            view.setLayoutParams(params);
            view.setBackgroundColor(color);
            ViewGroup viewGroup = (ViewGroup) activity.getWindow().getDecorView();
            viewGroup.addView(view);
            //   activity setContentView      
            ViewGroup contentView = (ViewGroup) activity.findViewById(android.R.id.content);
            View activityView = contentView.getChildAt(0);
            activityView.setFitsSystemWindows(true);
        }
    }

    private static int getStatusbarHeight(Activity activity) {
        Resources resources = activity.getResources();
        int statusHeightId = resources.getIdentifier("status_bar_height", "dimen", "android");
        return resources.getDimensionPixelOffset(statusHeightId);
    }

안드로이드 5.0 이상 시스템이 제공하는 방법인 set Status BarColor를 직접 호출하여 4.4-5.0 사이를 먼저 전체 화면으로 만든 다음에 상태 표시줄의 부분에 레이아웃을 추가한다.
3. 상태 표시줄 투명도 설정
코드:
   public static void setActivityTranslucent(Activity activity) {
        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
            activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
            activity.getWindow().setStatusBarColor(Color.TRANSPARENT);
        } else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT) {
            activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        }
    }

코드가 이렇게 많으니 분석이 끝났으니 효과는 여러분이 직접 해 보셔도 됩니다. 저는 그림을 그리지 않겠습니다.

좋은 웹페이지 즐겨찾기