CardBubbleForegroundDrawable.java 文件源码

java
阅读 18 收藏 0 点赞 0 评论 0

项目:FMTech 作者:
protected final void buildComponents(Rect paramRect)
{
  super.buildComponents(paramRect);
  this.mFullOutlinePath.reset();
  this.mFullOutlinePath.setFillType(Path.FillType.EVEN_ODD);
  this.mFullOutlinePath.moveTo(this.mCardBounds.left + this.mCornerRadius, this.mCardBounds.top);
  if (this.mBubbleGravity == 48)
  {
    this.mFullOutlinePath.lineTo(this.mBubbleCenterX - this.mBubbleTriangleBaseSize / 2.0F, this.mCardBounds.top);
    this.mOutlineCornerRect.set(this.mBubbleCenterX - this.mCornerRadius, this.mCardBounds.top - this.mBubbleSize + this.mShadowSize / 2.0F, this.mBubbleCenterX + this.mCornerRadius, this.mCardBounds.top - this.mBubbleSize + this.mShadowSize / 2.0F + 2.0F * this.mCornerRadius);
    this.mFullOutlinePath.lineTo(this.mOutlineCornerRect.left, this.mOutlineCornerRect.top + this.mCornerRadius / 2.0F);
    this.mFullOutlinePath.arcTo(this.mOutlineCornerRect, 225.0F, 90.0F, false);
    this.mFullOutlinePath.lineTo(this.mBubbleCenterX + this.mBubbleTriangleBaseSize / 2.0F, this.mCardBounds.top);
  }
  this.mFullOutlinePath.lineTo(this.mCardBounds.right - this.mCornerRadius, this.mCardBounds.top);
  if (this.mCornerRadius > 0.0F)
  {
    this.mOutlineCornerRect.set(this.mCardBounds.right - 2.0F * this.mCornerRadius, this.mCardBounds.top, this.mCardBounds.right, this.mCardBounds.top + 2.0F * this.mCornerRadius);
    this.mFullOutlinePath.arcTo(this.mOutlineCornerRect, 270.0F, 90.0F, false);
  }
  if (this.mBubbleGravity == 5)
  {
    this.mFullOutlinePath.lineTo(this.mCardBounds.right, this.mBubbleCenterY - this.mBubbleTriangleBaseSize / 2.0F);
    this.mOutlineCornerRect.set(this.mCardBounds.right + this.mBubbleSize - this.mShadowSize / 2.0F - 2.0F * this.mCornerRadius, this.mBubbleCenterY - this.mCornerRadius, this.mCardBounds.right + this.mBubbleSize - this.mShadowSize / 2.0F, this.mBubbleCenterY + this.mCornerRadius);
    this.mFullOutlinePath.lineTo(this.mOutlineCornerRect.right - this.mCornerRadius / 2.0F, this.mOutlineCornerRect.top);
    this.mFullOutlinePath.arcTo(this.mOutlineCornerRect, 315.0F, 90.0F, false);
    this.mFullOutlinePath.lineTo(this.mCardBounds.right, this.mBubbleCenterY + this.mBubbleTriangleBaseSize / 2.0F);
  }
  this.mFullOutlinePath.lineTo(this.mCardBounds.right, this.mCardBounds.bottom - this.mCornerRadius);
  if (this.mCornerRadius > 0.0F)
  {
    this.mOutlineCornerRect.set(this.mCardBounds.right - 2.0F * this.mCornerRadius, this.mCardBounds.bottom - 2.0F * this.mCornerRadius, this.mCardBounds.right, this.mCardBounds.bottom);
    this.mFullOutlinePath.arcTo(this.mOutlineCornerRect, 0.0F, 90.0F, false);
  }
  if (this.mBubbleGravity == 80)
  {
    this.mFullOutlinePath.lineTo(this.mBubbleCenterX + this.mBubbleTriangleBaseSize / 2.0F, this.mCardBounds.bottom);
    this.mOutlineCornerRect.set(this.mBubbleCenterX - this.mCornerRadius, this.mCardBounds.bottom + this.mBubbleSize - this.mShadowSize / 2.0F - 2.0F * this.mCornerRadius, this.mBubbleCenterX + this.mCornerRadius, this.mCardBounds.bottom + this.mBubbleSize - this.mShadowSize / 2.0F);
    this.mFullOutlinePath.lineTo(this.mOutlineCornerRect.right, this.mOutlineCornerRect.bottom - this.mCornerRadius / 2.0F);
    this.mFullOutlinePath.arcTo(this.mOutlineCornerRect, 45.0F, 90.0F, false);
    this.mFullOutlinePath.lineTo(this.mBubbleCenterX - this.mBubbleTriangleBaseSize / 2.0F, this.mCardBounds.bottom);
  }
  this.mFullOutlinePath.lineTo(this.mCardBounds.left + this.mCornerRadius, this.mCardBounds.bottom);
  if (this.mCornerRadius > 0.0F)
  {
    this.mOutlineCornerRect.set(this.mCardBounds.left, this.mCardBounds.bottom - 2.0F * this.mCornerRadius, this.mCardBounds.left + 2.0F * this.mCornerRadius, this.mCardBounds.bottom);
    this.mFullOutlinePath.arcTo(this.mOutlineCornerRect, 90.0F, 90.0F, false);
  }
  if (this.mBubbleGravity == 3)
  {
    this.mFullOutlinePath.lineTo(this.mCardBounds.left, this.mBubbleCenterY + this.mBubbleTriangleBaseSize / 2.0F);
    this.mOutlineCornerRect.set(this.mCardBounds.left - this.mBubbleSize + this.mShadowSize / 2.0F, this.mBubbleCenterY - this.mCornerRadius, this.mCardBounds.left - this.mBubbleSize + this.mShadowSize / 2.0F + 2.0F * this.mCornerRadius, this.mBubbleCenterY + this.mCornerRadius);
    this.mFullOutlinePath.lineTo(this.mOutlineCornerRect.left + this.mCornerRadius / 2.0F, this.mOutlineCornerRect.bottom);
    this.mFullOutlinePath.arcTo(this.mOutlineCornerRect, 135.0F, 90.0F, false);
    this.mFullOutlinePath.lineTo(this.mCardBounds.left, this.mBubbleCenterY - this.mBubbleTriangleBaseSize / 2.0F);
  }
  this.mFullOutlinePath.lineTo(this.mCardBounds.left, this.mCardBounds.top + this.mCornerRadius);
  if (this.mCornerRadius > 0.0F)
  {
    this.mOutlineCornerRect.set(this.mCardBounds.left, this.mCardBounds.top, this.mCardBounds.left + 2.0F * this.mCornerRadius, this.mCardBounds.top + 2.0F * this.mCornerRadius);
    this.mFullOutlinePath.arcTo(this.mOutlineCornerRect, 180.0F, 90.0F, false);
  }
  this.mFullOutlinePath.close();
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号