较新的Android API不会绘制负值矩形

问题描述:

我有一个正确显示在旧API上的画布。但是,当我在我的新平板电脑上运行它时,图形未被绘制。较新的Android 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]

似乎drawRect不再适用于新API中的负值。为了解决这个问题,除非你有特定的理由不希望他们使用新的API,否则确保值总是从低到高。