如何从图像创建圆形clippath?

Dar*_*Zon 6 android android-custom-view android-layout android-canvas

想象一下,我有一个矩形图像.我怎么能创建像下一个样式?

在此输入图像描述 在此输入图像描述

我的意思是,将图像裁剪成圆形,添加边框,阴影和粗糙/闪耀效果.到目前为止,我只尝试使用此代码片段来裁剪图像:在Android中从位图裁剪圆形区域,但仅此而已.我不知道如何在Android中执行其余组件.

Rom*_*Guy 16

实现此效果的简单方法是使用Canvas.drawCircle()BitmapShader:

BitmapShader s = new BitmapShader(myPhoto, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);

Paint p = new Paint();
p.setShader(s);

myCanvas.drawCircle(centerX, centerY, radius, p);
Run Code Online (Sandbox Code Playgroud)

要做阴影,只需调用Paint.setShadowLayer()绘画(这只有在你将效果绘制到屏幕外Bitmap或者如果你View使用软件层 - 通过调用View.setLayerType() - 设置时才会起作用).

可以使用Paint.Style.STROKE样式(可以通过调用设置Paint.setStyle())在顶部绘制另一个圆来绘制边框.

最后,您可以通过绘制圆形,椭圆形或Path在第一个圆形顶部绘制光泽.你需要LinearGradient在你的油漆上使用着色器,你还需要剪掉光泽.您可以通过两种方式执行此操作:

  1. 如果你将整个效果绘制成一个Bitmap,这是我建议的,只需将油漆设置Xfermode为a new PorterDuffXfermode(PorterDuff.Mode.SRC_IN).
  2. 如果要直接在屏幕上绘制效果,只需使用Canvas.clipPath()设置圆形剪辑即可.请注意,这仅适用于Android 4.3的硬件加速.