gpt4 book ai didi

Android FingerPaint Example using Canvas,什么是离屏 Canvas ?

转载 作者:搜寻专家 更新时间:2023-11-01 09:12:35 26 4
gpt4 key购买 nike

嗨,我正在阅读 fingerpaint例如,因为我正在构建一个签名 Activity ,它允许用户在手机上画一个签名,然后将其保存到 SD。

到目前为止,我已经看到 mPath 变量保存了用户当前正在绘制的路径,并且通过调用 onDraw(..) 方法将此路径绘制到屏幕上

canvas.drawPath(mPath, mPaint);

但是在示例中还有另一个 Canvas “mCanvas”在触摸监听器上绘制路径:

private void touch_up() {
mPath.lineTo(mX, mY);
// commit the path to our offscreen
mCanvas.drawPath(mPath, mPaint);
// kill this so we don't double draw
mPath.reset();
}

这是我不明白的。这个 mCanvas 对象到底是什么,为什么他们在示例中使用它,似乎只有来自 onDraw 方法的常规 Canvas 和 mPath 变量就足够了?

最佳答案

onDraw 方法在 UI 线程上执行。虽然我们无权访问 UI 线程(您不希望经常使用 UI 线程),但我们保留了一个离屏 BitmapCanvas 我们用来在上面画画。

为什么要这样做?这是因为它允许我们专注于绘图/处理,而不必担心阻塞 UI 线程。

注意:调用方法invalidate(或postInvalidate)不会立即阻塞并调用onDraw - 它只需使用操作系统排队绘制调用。

关于Android FingerPaint Example using Canvas,什么是离屏 Canvas ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7190412/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com