阴影层可与仿真器配合使用,但不适用于实际设备

时间:2013-03-11 14:36:34

标签: android paint shadow

我正在创建一个自定义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);
}

我不知道为什么但是它会用相同颜色的阴影,我仔细检查了一切,我不知道问题出在哪里。我在星系纽带上测试它。但是在模拟器上它可以正常工作。

1 个答案:

答案 0 :(得分:11)

我不确定,但这可能是因为硬件加速。如果视图加速,则setShadowLayer无效。尝试禁用整个应用程序的加速并检查。 Read this.

  

不支持的绘图操作

     

setShadowLayer():仅使用文本

     

使用软件图层类型强制在软件中呈现视图。如果硬件加速的视图(例如,如果您的整个应用程序是硬件加密的)有渲染问题,这是一种解决硬件渲染管道限制的简单方法。

使用setLayerType为各个视图设置图层类型,或为整个应用设置turn off acceleration in your manifest