目标是创建复合形状并添加浮雕效果。我可以成功创建如下图所示的形状。
woodPaint = new Paint();
woodPaint.setAntiAlias(true);
woodBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.wood);
woodShader = new BitmapShader(woodBitmap, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
woodPaint.setShader(woodShader);
...
@Override
protected void onDraw(Canvas canvas) {
canvas.drawCircle(handleX, radius, radius, woodPaint);
canvas.drawRoundRect(baseRectF, 25, 25, woodPaint);
super.onDraw(canvas);
}
图片:
然后我添加一个 EmbossMaskFilter
paintEmboss = new EmbossMaskFilter(new float[] { 1, 1, 1 }, 0.1f, 8f, 5f);
woodPaint.setMaskFilter(paintEmboss);
图片:
如您所见,浮雕蒙版分别应用于两个形状。如何将形状组合在一起并将浮雕应用于整个对象?我尝试将 xfer 模式设置为某种风格的搬运工 duff 但这不会影响浮雕蒙版分别应用于每个形状的事实。
谢谢你的帮助!
编辑: 如 Orabîg 所示,您必须使用已设置浮雕过滤器的油漆绘制一条路径。注意:方法 setMaskFilter() 是少数在硬件加速打开时不起作用的方法之一。我通过禁用活动的硬件加速解决了我在手机运行果冻豆时遇到的问题。您可以在您选择的任何级别禁用硬件加速:
- 应用
- 活动
- 窗户
- 看法
干杯!