背景
我有一个小的圆形联系人照片视图,需要向用户展示。如果照片可用,我应该展示它,而图像被四舍五入成一个圆圈,并且有一个高度。
如果照片不可用,我会在里面显示一个带有背景的图标,同时它仍然是圆形的并且有高度。
问题
我设法使显示的照片仅在 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"/>
“测试”是 80dp。
这是在代码中:
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 中添加笔画?