@Override
    protected boolean drawChild(Canvas canvas, View child, long drawingTime) {
        final int height = getHeight();
        final boolean drawingContent = isContentView(child);
        int clipLeft = 0, clipRight = getWidth();

        final int restoreCount = canvas.save();
        if (drawingContent) {
            final int childCount = getChildCount();
            for (int i = 0; i < childCount; i++) {
                final View v = getChildAt(i);
                if (v == child || v.getVisibility() != VISIBLE
                        || !hasOpaqueBackground(v) || !isDrawerView(v)
                        || v.getHeight() < height) {
                    continue;
                }

                if (checkDrawerViewAbsoluteGravity(v, Gravity.TOP)) {
                    final int vright = v.getRight();
                    if (vright > clipLeft) clipLeft = vright;
                } else {
                    final int vleft = v.getLeft();
                    if (vleft < clipRight) clipRight = vleft;
                }
            }
            canvas.clipRect(clipLeft, 0, clipRight, getHeight());
        }
        final boolean result = super.drawChild(canvas, child, drawingTime);
        canvas.restoreToCount(restoreCount);

        if (mScrimOpacity > 0 && drawingContent) {
            final int baseAlpha = (mScrimColor & 0xff000000) >>> 24;
            final int imag = (int) (baseAlpha * mScrimOpacity);
            final int color = imag << 24 | (mScrimColor & 0xffffff);
            mScrimPaint.setColor(color);

            canvas.drawRect(clipLeft, 0, clipRight, getHeight(), mScrimPaint);
        } else if (mShadowTopResolved != null
                && checkDrawerViewAbsoluteGravity(child, Gravity.TOP)) {
            final int shadowWidth = mShadowTopResolved.getIntrinsicWidth();
            final int childRight = child.getRight();
            final int drawerPeekDistance = mTopDragger.getEdgeSize();
            final float alpha =
                    Math.max(0, Math.min((float) childRight / drawerPeekDistance, 1.f));
            mShadowTopResolved.setBounds(childRight, child.getTop(),
                    childRight + shadowWidth, child.getBottom());
            mShadowTopResolved.setAlpha((int) (0xff * alpha));
            mShadowTopResolved.draw(canvas);
        } else if (mShadowBottomResolved != null
                && checkDrawerViewAbsoluteGravity(child, Gravity.BOTTOM)) {
            final int shadowWidth = mShadowBottomResolved.getIntrinsicWidth();
            final int childLeft = child.getLeft();
            final int showing = getWidth() - childLeft;
            final int drawerPeekDistance = mBottomDragger.getEdgeSize();
            final float alpha =
                    Math.max(0, Math.min((float) showing / drawerPeekDistance, 1.f));
            mShadowBottomResolved.setBounds(childLeft - shadowWidth, child.getTop(),
                    childLeft, child.getBottom());
            mShadowBottomResolved.setAlpha((int) (0xff * alpha));
            mShadowBottomResolved.draw(canvas);
        }
        return result;
    }
Set a drawable to draw in the insets area for the status bar.
Note that this will only be activated if this HomeDrawerLayout fitsSystemWindows.

@param color Color to use as a background drawable to draw behind the status bar
             in 0xAARRGGBB format.
app/src/main/java/com/sunnyweather/android/ui/customerUIs/HomeDrawerLayout.java