背景
我有一个小圆形联系人照片视图,我需要向用户显示.
如果照片可用,我应该显示它,同时图像圆形到圆形,并有一个高程.
如果照片不可用,我会在里面显示一个带有背景的图标,同时它仍然是圆形的并且有高度.
问题
我设法让照片显示仅适用于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中添加笔划?
最佳答案 我觉得我写这篇文章的速度太快了,而这里似乎已有一篇关于它的内容:
How to add a shadow and a border on circular imageView android?
我将看看它,看看它是否符合我的需求.
编辑:它看起来不像FAB(尤其是阴影),而且我没有看到将小内容放在中心的能力,就像在FAB中一样.它始终将内容置于中心裁剪方式.
当然,我可以在其中放入一个较小尺寸的图像….
编辑:我想我这次找到了合适的图书馆:
https://github.com/lopspower/CircularImageView
它允许阴影,自定义阴影大小和颜色,以及边框,以及如何缩放图像.
它不是一个FAB,它没有能力将图像置于中心而不进行裁剪,但这对我来说已经足够了.