我正在创建一个自定义drawable(它从Drawable扩展),我试图在它上面添加阴影效果。
以下是我的代码的一部分:
public void draw(Canvas canvas) {
Path path = new Path();
path.moveTo(0, 0);
path.lineTo(0, Y/2);
path.lineTo(X/2, Y);
path.lineTo(X, Y/2);
path.lineTo(X, 0);
path.lineTo(0, 0);
Paint paint = new Paint();
paint.setColor(context.getResources().getColor(R.color.red_dark));
paint.setStyle(Style.FILL_AND_STROKE);
paint.setStrokeWidth(2f);
paint.setShadowLayer(1, 0, 10f, context.getResources().getColor(R.color.black));
canvas.drawPath(path, paint);
}
我不知道为什么但是它会用相同颜色的阴影,我仔细检查了一切,我不知道问题出在哪里。我在星系纽带上测试它。但是在模拟器上它可以正常工作。
答案 0 :(得分:11)
我不确定,但这可能是因为硬件加速。如果视图加速,则setShadowLayer
无效。尝试禁用整个应用程序的加速并检查。 Read this.
不支持的绘图操作
setShadowLayer():仅使用文本
使用软件图层类型强制在软件中呈现视图。如果硬件加速的视图(例如,如果您的整个应用程序是硬件加密的)有渲染问题,这是一种解决硬件渲染管道限制的简单方法。
使用setLayerType为各个视图设置图层类型,或为整个应用设置turn off acceleration in your manifest。