Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何拥有一个无填充选项的晶圆厂,但仍然拥有它? 背景_Android_Floating Action Button_Android Elevation - Fatal编程技术网

Android 如何拥有一个无填充选项的晶圆厂,但仍然拥有它? 背景

Android 如何拥有一个无填充选项的晶圆厂,但仍然拥有它? 背景,android,floating-action-button,android-elevation,Android,Floating Action Button,Android Elevation,我有一个小的圆形联系人照片视图,我需要向用户展示。 如果照片是可用的,我应该显示它,而图像被圆化为一个圆圈,并有一个仰角 如果照片不可用,我会在里面显示一个带有背景的图标,但它仍然是圆形的,并且有高度 问题 我已设法使照片显示仅在Android 5及以上版本上工作: 但是,它的边缘颜色不好,因为它试图显示晶圆厂的背景,在安卓4.x和它下面,它显示为一个简单的矩形内容,没有任何与晶圆厂相关的内容,可能是因为填充是为了保护它以显示阴影 我还需要能够添加笔划(环绕圆形图像的特定颜色的细线),但我不确

我有一个小的圆形联系人照片视图,我需要向用户展示。 如果照片是可用的,我应该显示它,而图像被圆化为一个圆圈,并有一个仰角

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

问题 我已设法使照片显示仅在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);
    }
}