Android 如何拥有一个无填充选项的晶圆厂,但仍然拥有它? 背景
我有一个小的圆形联系人照片视图,我需要向用户展示。 如果照片是可用的,我应该显示它,而图像被圆化为一个圆圈,并有一个仰角 如果照片不可用,我会在里面显示一个带有背景的图标,但它仍然是圆形的,并且有高度 问题 我已设法使照片显示仅在Android 5及以上版本上工作: 但是,它的边缘颜色不好,因为它试图显示晶圆厂的背景,在安卓4.x和它下面,它显示为一个简单的矩形内容,没有任何与晶圆厂相关的内容,可能是因为填充是为了保护它以显示阴影 我还需要能够添加笔划(环绕圆形图像的特定颜色的细线),但我不确定如何添加它 我试过的 这在布局文件中:Android 如何拥有一个无填充选项的晶圆厂,但仍然拥有它? 背景,android,floating-action-button,android-elevation,Android,Floating Action Button,Android Elevation,我有一个小的圆形联系人照片视图,我需要向用户展示。 如果照片是可用的,我应该显示它,而图像被圆化为一个圆圈,并有一个仰角 如果照片不可用,我会在里面显示一个带有背景的图标,但它仍然是圆形的,并且有高度 问题 我已设法使照片显示仅在Android 5及以上版本上工作: 但是,它的边缘颜色不好,因为它试图显示晶圆厂的背景,在安卓4.x和它下面,它显示为一个简单的矩形内容,没有任何与晶圆厂相关的内容,可能是因为填充是为了保护它以显示阴影 我还需要能够添加笔划(环绕圆形图像的特定颜色的细线),但我不确
<android.support.design.widget.FloatingActionButton
android:id="@+id/image"
android:layout_width="@dimen/test"
android:layout_height="@dimen/test"/>
可报警的圆角代码:
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);
}
}
公共类RoundedCornersDrawable扩展了BitmapDrawable{
私有最终BitmapShader BitmapShader;
私人最终油漆p;
私有最终RectF rect;
私有最终浮动边界半径;
公共圆角可拖动(最终资源、最终位图、最终浮动边界半径){
超级(资源、位图);
bitmapShader=新的bitmapShader(getBitmap(),Shader.TileMode.CLAMP,Shader.TileMode.CLAMP);
最终位图b=getBitmap();
p=getPaint();
p、 setAntiAlias(真);
p、 设置着色器(位图着色器);
最终整数w=b.getWidth(),h=b.getHeight();
rect=新的RectF(0,0,w,h);
this.borderRadius=borderRadius<0?0.15f*数学最小值(w,h):borderRadius;
}
@凌驾
公共空白绘制(最终画布){
canvas.drawRoundRect(rect,borderRadius,borderRadius,p);
}
}
问题
我如何让工厂以这种方式运作?对于所有Android版本,我如何可以随意禁用填充,但仍然有一个带阴影的圆形图像
如何向圆形晶圆厂添加一个笔划 我觉得我写这篇文章的速度太快了,而这里似乎已经有了一篇: 我会看一看,看看它是否符合我需要的要求 编辑:它看起来不如FAB(特别是阴影),而且我看不到像FAB那样将小内容放在中间的能力。它总是将内容放在中心位置 当然,我可以在里面放一张小一点的图片
编辑:我想这次我找到了正确的库: 它允许阴影,自定义阴影大小和颜色,以及边框,以及如何缩放图像
这不是一个很好的网站,它没有能力在不裁剪的情况下将图像放在中间,但对我来说已经足够了。你问的每一个问题,我都会将其添加到书签中。你问的问题真的很好,所以用户。干杯+1问1答。@LittleChild谢谢你。我不知道在这里可以检查其他用户的线程。我该怎么做呢?你可以直接浏览他们的个人资料,看看他们问的问题和写的答案。
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);
}
}