Bri*_*erg 2 android surfaceview
标题说得很清楚,虽然我会给出一个代码示例以防万一.这来自Android SDK中的LunarLander示例:
@Override
public void run() {
while (mRun) {
Canvas c = null;
try {
c = mSurfaceHolder.lockCanvas(null);
synchronized (mSurfaceHolder) {
if (mMode == STATE_RUNNING) updatePhysics();
doDraw(c);
}
} finally {
// do this in a finally so that if an exception is thrown
// during the above, we don't leave the Surface in an
// inconsistent state
if (c != null) {
mSurfaceHolder.unlockCanvasAndPost(c);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
lockCanvas()必须重新绘制所有像素的文档,而lockCanvas(Rect dirty)表示您只需要重新绘制像素dirty.我看到了传递null给这个函数的两种可能的解释:它不需要重新绘制任何像素,或者行为方式与之相同lockCanvas().
它是开源的
public Canvas lockCanvas() {
return internalLockCanvas(null);
}
public Canvas lockCanvas(Rect dirty) {
return internalLockCanvas(dirty);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1295 次 |
| 最近记录: |