私は簡単な画家をしようとしています。 Androidに3つの独立したキャンバスがあり、それを順番に描画できるように見えるという問題があります。SurfaceViewからCanvasに描画する方法は?
私はそれからホルダーを取り、SurfaceView
でUIを作りました。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sv = (SurfaceView) findViewById(R.id.sv);
holder = sv.getHolder();
holder.addCallback(callback);
}
次にSurfaceを取った。
@Override
public void surfaceCreated(SurfaceHolder holder) {
surface = holder.getSurface();
}
そしてOnTouchListener()
ドロー点や線からのイベントによって。
private void paintStartDot(float x, float y) {
Canvas canvas = surface.lockCanvas(null);
canvas.drawPoint(x, y, drawPaint);
surface.unlockCanvasAndPost(canvas);
lastX = x;
lastY = y;
}
private void paintEndDot(float x, float y) {
Canvas canvas = surface.lockCanvas(null);
canvas.drawLine(lastX, lastY, x, y, drawPaint);
surface.unlockCanvasAndPost(canvas);
lastX = x;
lastY = y;
}
スクリーンキャスト:
何が悪いのでしょうか?
完全なソースがここにあります:Surface.lockCanvas
があなたに与えCanvas
こと https://github.com/tseglevskiy/canvasdemo1/blob/error/app/src/main/java/ru/jollydroid/canvasdemo1/MainActivity.java
詳細情報:http://developer.android.com/training/custom-views/index.html – fadden