我正在编写一个自定义视图来显示信号。为了缩短我的onDraw()时间,我将我已经绘制的所有内容缓存到Bitmap中,并在每个onDraw()调用中仅附加它。通过这样做,我可以节省大量时间,因为我只需要一次绘制一些像素,而不是重新绘制整个视图。
然而有一件事情困扰着我 - 直接绘制到提供的画布似乎比先在位图上绘制再将位图绘制到画布上提供了更准确的绘制。通过查看以下图片的下部,您可以看到差异:
我上传了一个演示项目,展示了这种差异:https://github.com/gardarh/android-uglybitmapdrawing/,但相关代码如下:
为什么这两个轨迹不同,更重要的是,我如何使下面的轨迹看起来像上面的轨迹?
然而有一件事情困扰着我 - 直接绘制到提供的画布似乎比先在位图上绘制再将位图绘制到画布上提供了更准确的绘制。通过查看以下图片的下部,您可以看到差异:
我上传了一个演示项目,展示了这种差异:https://github.com/gardarh/android-uglybitmapdrawing/,但相关代码如下:
@Override
public void onDraw(Canvas canvas) {
if(cachedBitmap == null) {
cachedBitmap = Bitmap.createBitmap(getWidth(), 200, Config.ARGB_8888);
cachedCanvas = new Canvas(cachedBitmap);
}
for(int i = 0; i < COORDS.length; i++) {
float[] curCoords = COORDS[i];
canvas.drawLine(curCoords[0], curCoords[1], curCoords[2], curCoords[3], linePaint);
cachedCanvas.drawLine(curCoords[0], curCoords[1], curCoords[2], curCoords[3], linePaint);
}
canvas.drawBitmap(cachedBitmap, 0, 120, null);
}
为什么这两个轨迹不同,更重要的是,我如何使下面的轨迹看起来像上面的轨迹?