较新的Android API不会绘制负值rect

时间:2014-10-10 05:08:00

标签: 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, 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] [GREEN] [蓝色] [RED] [BLUE] [GREEN]

较新的设备: [RED] [SPACE] [蓝色] [RED] [SPACE] [GREEN]

1 个答案:

答案 0 :(得分:2)

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