@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { final View thisView = this; //宽度:上圆和下圆的最大直径 final int width = ((mMaxCircleRadius + STROKE_WIDTH) * 2); //高度:上圆半径 + 圆心距 + 下圆半径 final int height = (int) Math.ceil(bottomCircle.y + bottomCircle.radius + STROKE_WIDTH * 2); super.setMeasuredDimension(width + thisView.getPaddingLeft() + thisView.getPaddingRight(), View.resolveSize(height + thisView.getPaddingTop() + thisView.getPaddingBottom(), heightMeasureSpec)); }
@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { final View thisView = this; final Drawable drawable = mPathsDrawable; super.setMeasuredDimension( View.resolveSize(drawable.getBounds().width()+thisView.getPaddingLeft()+thisView.getPaddingRight(), widthMeasureSpec), View.resolveSize(drawable.getBounds().height()+thisView.getPaddingTop()+thisView.getPaddingBottom(), heightMeasureSpec)); }
@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.setMeasuredDimension((int)mDrawRect.width(), (int)mDrawRect.height()); }
heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.getMode(heightMeasureSpec)); super.setMeasuredDimension(widthMeasureSpec, heightMeasureSpec);
@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int widthMode = MeasureSpec.getMode(widthMeasureSpec); int widthSize = MeasureSpec.getSize(widthMeasureSpec); int heightMode = MeasureSpec.getMode(heightMeasureSpec); int heightSize = MeasureSpec.getSize(heightMeasureSpec); isExactlyDimension = widthMode == MeasureSpec.EXACTLY && heightMode == MeasureSpec.EXACTLY; //if (mLayoutWidth == ViewGroup.LayoutParams.WRAP_CONTENT) if (widthMode == MeasureSpec.UNSPECIFIED) { widthSize = mBadge.getBadgeWidth(); } else if (widthMode == MeasureSpec.AT_MOST) { widthSize = Math.min(widthSize, mBadge.getBadgeWidth()); } //if (mLayoutHeight == ViewGroup.LayoutParams.WRAP_CONTENT) if (heightMode == MeasureSpec.UNSPECIFIED) { heightSize = mBadge.getBadgeHeight(); } else if (heightMode == MeasureSpec.AT_MOST) { heightSize = Math.min(heightSize, mBadge.getBadgeHeight()); } super.setMeasuredDimension(resolveSize(widthSize, widthMeasureSpec), resolveSize(heightSize, heightMeasureSpec)); }
super.setMeasuredDimension(width, height);