我正在计算函数图并将它们放入android.graphics.Path
个对象中,然后使用android.graphics.Canvas.drawPath()
绘制它。
除非绝对y值非常高(正面或负面)并且应用程序在某些设备上运行,否则这非常有效。然后,它可能根本不绘制路径。发生这种情况的阈值似乎是随机的和设备特定的。
有谁知道这里可能出现什么问题?
[编辑:仅当目标API级别为14或更高时才会发生这种情况]
编辑:
例如,在View.onDraw(Canvas canvas)
方法中查看此代码:
Paint paint = new Paint();
Path p1 = new Path();
paint.setColor(Color.BLUE);
for(float x = 0; x < getWidth(); x++)
p1.lineTo(x, x);
canvas.drawPath(p1, paint);
Path p2 = new Path();
paint.setColor(Color.GREEN);
for(float x = 0; x < getWidth(); x++)
p2.lineTo(x, x*x);
canvas.drawPath(p2, paint);
第一条路径应该是从左上角到右下角的一条线;第二条路径应该做同样但具有抛物线的形状(因此,你只能看到它的一部分)。
第一条路径绘制,第二条路径没有,显然是因为y值太高。很高兴知道“太高”意味着什么;)
答案 0 :(得分:1)
我找到了解决方案。
问题是,从API级别14开始,所有绘图都是硬件加速的does not support all the functionality。
正如本文所述,通过以下方式关闭硬件加速很简单:
view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
您可以在this blog post找到更多信息。