【问题标题】:Drop shadow for Floating Action Button浮动操作按钮的阴影
【发布时间】:2015-08-23 02:27:32
【问题描述】:

我正在创建自己的浮动操作按钮。为此,我使用了 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设计支持库
  • @r7v7:我不想使用支持库之一,因为它不会在 pre-L 设备上提供涟漪效应。
  • @Xaver Kapeller:现在试试你的解决方案。
  • @Xaver Kapeller:margin 没有解决问题。没有改变。您能提出任何其他解决方案吗?

标签: android android-support-library shadow floating-action-button


【解决方案1】:

您可以在 GitHub 的 here 处查看这个 fab 库。该库允许您在 fab 上设置波纹效果颜色。

<com.melnykov.fab.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|right"
        android:layout_margin="16dp"
        android:src="@drawable/ic_action_content_new"
        fab:fab_colorNormal="@color/primary"
        fab:fab_colorPressed="@color/primary_pressed"
        fab:fab_colorRipple="@color/ripple" />

【讨论】:

  • 如何去除阴影?
  • @AhmadShahwaiz app:elevation:0dp;
猜你喜欢
  • 1970-01-01
  • 2023-03-24
  • 2016-04-06
  • 2016-07-18
  • 2018-02-28
  • 1970-01-01
  • 2015-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多