@Override
    protected void onBoundsChange(Rect bounds) {
        super.onBoundsChange(bounds);

        if (!mCustomMarkSize) {
            initIntrinsic();
        }

        if (bounds.isEmpty())
            return;

        mCenterX = bounds.centerX();
        mCenterY = bounds.centerY();

        int minCenter = Math.min(bounds.width(), bounds.height()) >> 1;
        int areRadius = minCenter - ((mBorderSize + 1) >> 1);

        mOval.set(mCenterX - areRadius, mCenterY - areRadius, mCenterX + areRadius, mCenterY + areRadius);
        mCircleRadius = minCenter - mBorderSize - mIntervalSize;
    }
Initializes local dynamic properties from state. This should be called
after significant state changes, e.g. from the One True Constructor and
after inflating or applying a theme.

@param tintStateList ColorStateList
caprice/ui/src/main/java/net/qiujuer/genius/ui/drawable/CircleCheckDrawable.java