Wie zu zeichnen auf Leinwand von SurfaceView?

Ich versuche zu tun, einfache Maler. Das problem, dass es aussieht wie Android verfügt über drei unabhängige Canvas-Bereich und geben Sie mir es zum zeichnen der Reihe nach.

Ich aus UI mit SurfaceView, nahm Halter von ihm.

@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);
}

Dann nahm der Oberfläche.

@Override
    public void surfaceCreated(SurfaceHolder holder) {
    surface = holder.getSurface();
}

Und durch die Ereignisse aus OnTouchListener() zeichnen von Punkten und Linien.

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;
}

Screencast:

https://youtu.be/NNDnzrtMLZI

Was ist falsch?

Komplette Quellcode ist hier verfügbar:
https://github.com/tseglevskiy/canvasdemo1/blob/error/app/src/main/java/ru/jollydroid/canvasdemo1/MainActivity.java

InformationsquelleAutor tse | 2016-03-28
Schreibe einen Kommentar