0

enter image description hereТень для плавающей кнопки действия

Я создаю свою собственную кнопку плавающего действия. Для этого я использую 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); 
} 

}

Скажите, как сделать тень ясно и собственно так же, как один из кнопки плавающих действий данны в библиотеке поддержки.

+0

Просто поместите марку вокруг кнопки «Button». –

+2

использование поддержки поддержки Android поддержки – 3xplore

+0

@ r7v7: Я не хочу использовать библиотеку поддержки, потому что она не обеспечивает эффект пульсации на устройствах pre-L. –

ответ

0

Вы можете проверить эту библиотеку здесь here в GitHub. Библиотека позволяет вам установить цвет эффекта пульсации на фабрике.

<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" /> 
+0

Как удалить тень? –

+0

Приложение @AhmadShahwaiz: высота: 0dp; –