- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
目标是创建复合形状并添加浮雕效果。我可以成功创建如下图所示的形状。
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 模式设置为一些 porter duff 的味道,但这并不影响浮雕蒙版分别应用于每个形状的事实。
感谢您的帮助!
编辑:正如 Orabîg 所说明的那样,您必须使用设置了浮雕过滤器的颜料绘制一条路径。注意:方法 setMaskFilter() 是少数在硬件加速打开时不起作用的方法之一。我通过禁用 Activity 的硬件加速解决了我在使用运行果冻 bean 的手机时遇到的问题。您可以在任何 level 禁用硬件加速你选择:
干杯!
最佳答案
好吧,你只需要一个浮雕效果,所以你应该只画一个形状。
所以你应该使用 Canvas.drawPath() 方法。
您只需使用以下方法定义一个 Path 对象: 首先定义 3 个 RectF 对象,它们将是最左边的圆(想象一下它后面的圆)、最右边的和滑动的圆的边界框: 您可能需要做一些额外的数学运算来确定用于 box2 的正确角度(它们取决于圆和整个矩形各自的大小)
祝你好运!
关于android - 如何组成多个形状并添加浮雕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14904472/
我正在努力使我的标题具有漂亮的浮雕外观。它在 Chrome 中运行良好,但 Firefox 退出了。我怎样才能使这种效果在两者中都起作用?这是 fiddle : https://jsfiddle.ne
自定义 UIBarButtonItem 有问题。当我通过 创建自定义 UIBarButtonItem 时 [[UIBarButtonItem alloc]initWithImage:[UIImage
在我的 iPhone 应用程序中, 我有一个带有 View 的 ViewController。 请看图片。 这是一个模型。我想要这种弹出式的效果。白色 View 从浅灰色主视图中弹出。我认为这与它的边
我是一名优秀的程序员,十分优秀!