假设我有一个矩形图像。我怎样才能创造出像下一个这样的风格?
我的意思是,将图像裁剪成圆形,添加边框、阴影和粗/闪耀效果。到现在为止,我只尝试过这个 fragment 代码来裁剪图像:Cropping circular area from bitmap in Android但仅此而已。我不知道如何在 Android 中完成剩余的组件。
最佳答案
实现此效果的一种简单方法是使用 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()
(这仅在您将效果绘制到离屏 Bitmap
中或者如果您的 View
使用一个软件层——通过调用 View.setLayerType()
- 设置。
可以使用 Paint.Style.STROKE
样式(您可以通过调用 Paint.setStyle()
设置)通过在顶部绘制另一个圆圈来绘制边框.
最后,您可以通过在第一个圆上绘制一个圆、椭圆或 Path
来绘制光泽。您需要在绘画上使用 LinearGradient
着色器,还需要剪切光泽度。您可以通过两种方式执行此操作:
- 如果您将整个效果绘制到
Bitmap
中(这是我的建议),只需将绘画的Xfermode
设置为new PorterDuffXfermode(PorterDuff.模式.SRC_IN)
. - 如果您直接在屏幕上绘制效果,您可以简单地使用
Canvas.clipPath()
设置一个圆形剪辑。请注意,这仅适用于 Android 4.3 的硬件加速。
关于android - 如何从图像创建圆形剪辑路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18641362/