较新的Android API赢得了';t绘制负值矩形

较新的Android API赢得了';t绘制负值矩形,android,android-view,drawrect,ondraw,Android,Android View,Drawrect,Ondraw,我有一个画布,可以正确地显示在旧的API上。然而,当我在较新的平板电脑上运行它时,图形并没有被绘制出来 下面是一个简单的测试示例: protected void onDraw(Canvas canvas) { // ..... // skipped paint initialization code ... canvas.drawRect(0, 0, 100, 100, redPaint); canvas.drawRect(100, 100, 200, 0,

我有一个画布,可以正确地显示在旧的API上。然而,当我在较新的平板电脑上运行它时,图形并没有被绘制出来

下面是一个简单的测试示例:

  protected void onDraw(Canvas canvas) {
    // .....
    // skipped paint initialization code ...

    canvas.drawRect(0, 0, 100, 100, redPaint);
    canvas.drawRect(100, 100, 200, 0, greenPaint);
    canvas.drawRect(200, 0, 300, 100, bluePaint);
    canvas.drawRect(300, 0, 400, 100, redPaint);
    canvas.drawRect(500, 0, 400, 100, bluePaint);
    canvas.drawRect(500, 0, 600, 100, greenPaint);
  }
在旧的和新的平板电脑上运行此功能将得到非常不同的结果

旧设备: [红色][绿色][蓝色][红色][蓝色][绿色]

更新的设备:
[RED][SPACE][BLUE][RED][SPACE][GREEN]

在较新的API中,drawRect似乎不再适用于负值。要解决此问题,请确保值始终从低到高,除非您有特定的理由不希望它们使用新的API。

这不仅适用于较新的API,而且取决于设备。Nexus与API27绘制了rect,而华为与API25绘制的则不有趣!另一个永远不要做错事的理由