4

背景

我有一个小的圆形联系人照片视图,需要向用户展示。如果照片可用,我应该展示它,而图像被四舍五入成一个圆圈,并且有一个高度。

如果照片不可用,我会在里面显示一个带有背景的图标,同时它仍然是圆形的并且有高度。

问题

我设法使显示的照片仅在 Android 5 及更高版本上工作:

在此处输入图像描述

但是,它的边缘颜色很差,因为它试图显示 FAB 的背景,并且在 Android 4.x 及其下方显示为简单的矩形内容,没有与 FAB 相关的任何内容,可能是因为填充是什么保护它以显示阴影。

我还需要能够添加笔触(圆形图像周围的特定颜色的细线),但我不知道如何添加它。

我试过的

这是在布局文件中:

<android.support.design.widget.FloatingActionButton
    android:id="@+id/image"
    android:layout_width="@dimen/test"
    android:layout_height="@dimen/test"/>

“测试”是 80​​dp。

这是在代码中:

    FloatingActionButton floatingActionButton = (FloatingActionButton) view.findViewById(R.id.image);
    floatingActionButton.setPadding(0, 0, 0, 0);
    final Bitmap bitmap = ...
    RoundedCornersDrawable roundedCornersDrawable = new RoundedCornersDrawable(getResources(), bitmap, bitmap.getWidth() / 2);
    floatingActionButton.setImageDrawable(roundedCornersDrawable);

RoundedCornersDrawable 的代码:

public class RoundedCornersDrawable extends BitmapDrawable {

    private final BitmapShader bitmapShader;
    private final Paint p;
    private final RectF rect;
    private final float borderRadius;

    public RoundedCornersDrawable(final Resources resources, final Bitmap bitmap, final float borderRadius) {
        super(resources, bitmap);
        bitmapShader = new BitmapShader(getBitmap(), Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
        final Bitmap b = getBitmap();
        p = getPaint();
        p.setAntiAlias(true);
        p.setShader(bitmapShader);
        final int w = b.getWidth(), h = b.getHeight();
        rect = new RectF(0, 0, w, h);
        this.borderRadius = borderRadius < 0 ? 0.15f * Math.min(w, h) : borderRadius;
    }

    @Override
    public void draw(final Canvas canvas) {
        canvas.drawRoundRect(rect, borderRadius, borderRadius, p);
    }
}

问题

如何让 FAB 以这种方式工作?对于所有 Android 版本,如何随意禁用填充,但仍然有一个带有阴影的圆形图像?

如何在圆形 FAB 中添加笔画?

4

1 回答 1

1

我想我写这篇文章的速度太快了,虽然这里似乎已经有一篇关于它的文章:

如何在圆形imageView android上添加阴影和边框?

我会看看它,看看它是否符合我需要的要求。

编辑:它看起来不如 FAB(尤其是阴影),而且我看不到将小内容放在中心的能力,就像在 FAB 中一样。它总是以中心裁剪的方式放置内容。

当然,我可以在里面放一个更小尺寸的图像......


编辑:我想这次我找到了正确的库: https ://github.com/lopspower/CircularImageView

它允许一个阴影,自定义阴影大小和颜色,还有一个边框,以及如何缩放图像。

它不完全是 FAB,它没有能力将图像放在中心而不进行裁剪,但对我来说已经足够了。

于 2015-12-15T14:51:22.163 回答