6

想象一下,我有一个矩形图像。我怎样才能创造出下一个风格?

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

我的意思是,将图像裁剪成一个圆圈,添加边框、阴影和粗糙/光泽效果。到目前为止,我只尝试过这段代码来裁剪图像:从 Android 中的位图裁剪圆形区域,仅此而已。我不知道如何在 Android 中完成剩余的组件。

4

1 回答 1

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);

要制作阴影,只需调用Paint.setShadowLayer()绘图(仅当您将效果绘制到屏幕外BitmapView使用软件层(通过调用设置)时才会起作用View.setLayerType() )。

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

最后,您可以通过绘制圆形、椭圆形或Path在您的第一个圆形顶部来绘制光泽。您需要LinearGradient在油漆上使用着色器,并且还需要剪切光泽。您可以通过两种方式做到这一点:

  1. 如果您将整个效果绘制到 aBitmap中,这是我建议的,只需将绘制设置Xfermode为 a new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)
  2. 如果您直接在屏幕上绘制效果,您可以简单地使用Canvas.clipPath()设置圆形剪辑。请注意,这仅适用于 Android 4.3 的硬件加速。
于 2013-09-05T17:46:14.437 回答