Тень для плавающей кнопки действия
Я создаю свою собственную кнопку плавающего действия. Для этого я использую RippleDrawable (созданный мной) и ShadowDrawable (также созданный мной). Проблема, с которой я сталкиваюсь, заключается в том, что мой ShadowDrawbale не отличает отличную тень от соответствующей кнопки. Код для моего ShadowDrawable выглядит следующим образом:
public class ShadowDrawable extends Drawable {
private Context context;
private float floatMaximumRadius = 0;
private int intCenterX = 0, intCenterY = 0, intShadowAlpha,intShadowColor;
private Paint paintShadow;
public ShadowDrawable(Context context) {
this.context = context;
paintShadow = new Paint(Paint.ANTI_ALIAS_FLAG);
paintShadow.setStyle(Paint.Style.FILL);
}
@Override
public void draw(Canvas canvas) {
paintShadow.setShadowLayer(dpToPx(4f), dpToPx(1f), dpToPx(3f), intShadowColor);
paintShadow.setAlpha(intShadowAlpha);
paintShadow.setColor(intShadowColor);
canvas.drawCircle(intCenterX, intCenterY, floatMaximumRadius, paintShadow);
}
@Override
public int getOpacity() {
return 0;
}
@Override
protected void onBoundsChange(Rect rectBounds) {
super.onBoundsChange(rectBounds);
intCenterX = rectBounds.centerX();
intCenterY = rectBounds.centerY();
floatMaximumRadius = (Math.min(rectBounds.width(), rectBounds.height())/2) - 4;
}
@Override
public void setAlpha(int alpha) {
setShadowAlpha(alpha);
}
@Override
public void setColorFilter(ColorFilter cf) {
}
public void setShadowAlpha(int intShadowAlpha) {
this.intShadowAlpha = intShadowAlpha;
invalidateSelf();
}
public void setShadowColor(int intShadowColor) {
this.intShadowColor = intShadowColor;
invalidateSelf();
}
private int dpToPx(float dp) {
final float scale = context.getResources().getDisplayMetrics().density;
return Math.round(dp * scale);
}
}
Скажите, как сделать тень ясно и собственно так же, как один из кнопки плавающих действий данны в библиотеке поддержки.
Просто поместите марку вокруг кнопки «Button». –
использование поддержки поддержки Android поддержки – 3xplore
@ r7v7: Я не хочу использовать библиотеку поддержки, потому что она не обеспечивает эффект пульсации на устройствах pre-L. –