/** Initialize shadows, color overlay, and rounded corners. All are optional. */
 void initialize(int shadowType, boolean hasColorDimOverlay, int roundedCornerRadius) {
   if (mInitialized) {
     throw new IllegalStateException();
   }
   mInitialized = true;
   mRoundedCornerRadius = roundedCornerRadius;
   mRoundedCorners = roundedCornerRadius > 0;
   mShadowType = shadowType;
   switch (mShadowType) {
     case SHADOW_DYNAMIC:
       mShadowImpl =
           ShadowHelper.getInstance()
               .addDynamicShadow(this, mUnfocusedZ, mFocusedZ, mRoundedCornerRadius);
       break;
     case SHADOW_STATIC:
       mShadowImpl = StaticShadowHelper.getInstance().addStaticShadow(this);
       break;
   }
   if (hasColorDimOverlay) {
     setWillNotDraw(false);
     mOverlayColor = Color.TRANSPARENT;
     mOverlayPaint = new Paint();
     mOverlayPaint.setColor(mOverlayColor);
     mOverlayPaint.setStyle(Paint.Style.FILL);
   } else {
     setWillNotDraw(true);
     mOverlayPaint = null;
   }
 }
 /** Returns true if the platform sdk supports dynamic shadows. */
 public static boolean supportsDynamicShadow() {
   return ShadowHelper.getInstance().supportsDynamicShadow();
 }