CardViewEclairMr1public class CardViewEclairMr1 extends Object implements CardViewImpl
Fields Summary |
---|
final android.graphics.RectF | sCornerRect |
Methods Summary |
---|
RoundRectDrawableWithShadow | createBackground(android.content.Context context, int backgroundColor, float radius, float elevation, float maxElevation)
return new RoundRectDrawableWithShadow(context.getResources(), backgroundColor, radius,
elevation, maxElevation);
| public float | getElevation(CardViewDelegate cardView)
return getShadowBackground(cardView).getShadowSize();
| public float | getMaxElevation(CardViewDelegate cardView)
return getShadowBackground(cardView).getMaxShadowSize();
| public float | getMinHeight(CardViewDelegate cardView)
return getShadowBackground(cardView).getMinHeight();
| public float | getMinWidth(CardViewDelegate cardView)
return getShadowBackground(cardView).getMinWidth();
| public float | getRadius(CardViewDelegate cardView)
return getShadowBackground(cardView).getCornerRadius();
| private RoundRectDrawableWithShadow | getShadowBackground(CardViewDelegate cardView)
return ((RoundRectDrawableWithShadow) cardView.getBackground());
| public void | initStatic()
// Draws a round rect using 7 draw operations. This is faster than using
// canvas.drawRoundRect before JBMR1 because API 11-16 used alpha mask textures to draw
// shapes.
RoundRectDrawableWithShadow.sRoundRectHelper
= new RoundRectDrawableWithShadow.RoundRectHelper() {
@Override
public void drawRoundRect(Canvas canvas, RectF bounds, float cornerRadius,
Paint paint) {
final float twoRadius = cornerRadius * 2;
final float innerWidth = bounds.width() - twoRadius - 1;
final float innerHeight = bounds.height() - twoRadius - 1;
// increment it to account for half pixels.
if (cornerRadius >= 1f) {
cornerRadius += .5f;
sCornerRect.set(-cornerRadius, -cornerRadius, cornerRadius, cornerRadius);
int saved = canvas.save();
canvas.translate(bounds.left + cornerRadius, bounds.top + cornerRadius);
canvas.drawArc(sCornerRect, 180, 90, true, paint);
canvas.translate(innerWidth, 0);
canvas.rotate(90);
canvas.drawArc(sCornerRect, 180, 90, true, paint);
canvas.translate(innerHeight, 0);
canvas.rotate(90);
canvas.drawArc(sCornerRect, 180, 90, true, paint);
canvas.translate(innerWidth, 0);
canvas.rotate(90);
canvas.drawArc(sCornerRect, 180, 90, true, paint);
canvas.restoreToCount(saved);
//draw top and bottom pieces
canvas.drawRect(bounds.left + cornerRadius - 1f, bounds.top,
bounds.right - cornerRadius + 1f, bounds.top + cornerRadius,
paint);
canvas.drawRect(bounds.left + cornerRadius - 1f,
bounds.bottom - cornerRadius + 1f, bounds.right - cornerRadius + 1f,
bounds.bottom, paint);
}
//// center
canvas.drawRect(bounds.left, bounds.top + Math.max(0, cornerRadius - 1f),
bounds.right, bounds.bottom - cornerRadius + 1f, paint);
}
};
| public void | initialize(CardViewDelegate cardView, android.content.Context context, int backgroundColor, float radius, float elevation, float maxElevation)
RoundRectDrawableWithShadow background = createBackground(context, backgroundColor, radius,
elevation, maxElevation);
background.setAddPaddingForCorners(cardView.getPreventCornerOverlap());
cardView.setBackgroundDrawable(background);
updatePadding(cardView);
| public void | onCompatPaddingChanged(CardViewDelegate cardView)
// NO OP
| public void | onPreventCornerOverlapChanged(CardViewDelegate cardView)
getShadowBackground(cardView).setAddPaddingForCorners(cardView.getPreventCornerOverlap());
updatePadding(cardView);
| public void | setBackgroundColor(CardViewDelegate cardView, int color)
getShadowBackground(cardView).setColor(color);
| public void | setElevation(CardViewDelegate cardView, float elevation)
getShadowBackground(cardView).setShadowSize(elevation);
| public void | setMaxElevation(CardViewDelegate cardView, float maxElevation)
getShadowBackground(cardView).setMaxShadowSize(maxElevation);
updatePadding(cardView);
| public void | setRadius(CardViewDelegate cardView, float radius)
getShadowBackground(cardView).setCornerRadius(radius);
updatePadding(cardView);
| public void | updatePadding(CardViewDelegate cardView)
Rect shadowPadding = new Rect();
getShadowBackground(cardView).getMaxShadowAndCornerPadding(shadowPadding);
((View) cardView).setMinimumHeight((int) Math.ceil(getMinHeight(cardView)));
((View) cardView).setMinimumWidth((int) Math.ceil(getMinWidth(cardView)));
cardView.setShadowPadding(shadowPadding.left, shadowPadding.top,
shadowPadding.right, shadowPadding.bottom);
|
|