Zeichnung auf einem SurfaceView in Android

Ich versuche zu tun, einige sehr einfach Zeichnung in eine SurfaceView aber ich kann Sie nicht arbeiten. Es gibt keine Ausnahmen, aber ich sehe keine Ergebnisse.

Genauer gesagt, ich versuche zu schaffen, eine SurfaceView und füllen Sie es mit einer einzigen Farbe.

Hier geht mein code:

public class SvetlinSurfaceViewTestActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        SurfaceRenderer renderer = new SurfaceRenderer(this);
        setContentView(renderer);
    }
}

class SurfaceRenderer extends ViewGroup implements SurfaceHolder.Callback {
    private final String TAG = "Svetlin Surface Renderer";

    SurfaceView mSurfaceView;
    SurfaceHolder mHolder;

    public SurfaceRenderer(Context context) {
        super(context);

        mSurfaceView = new SurfaceView(context);
        addView(mSurfaceView);

        //Install a SurfaceHolder.Callback so we get notified when the
        //underlying surface is created and destroyed.
        mHolder = mSurfaceView.getHolder();
        mHolder.addCallback(this);
    }

    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {}

    @Override
    public void surfaceCreated(SurfaceHolder holder) {
        tryDrawing(holder);
    }

    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { 
        tryDrawing(holder);
    }

    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {}

    private void tryDrawing(SurfaceHolder holder) {
        Log.i(TAG, "Trying to draw...");

        Canvas canvas = holder.lockCanvas();
        if (canvas == null) {
            Log.e(TAG, "Cannot draw onto the canvas as it's null");
        } else {
            drawMyStuff(canvas);
            holder.unlockCanvasAndPost(canvas);
        }
    }

    private void drawMyStuff(final Canvas canvas) {
        Log.i(TAG, "Drawing...");
        canvas.drawRGB(255, 128, 128);
    }
}

Als erwartet, ich bin immer Zeichnung... zweimal ausgegeben.

Konnte jeder jeden schlagen, warum ich möglicherweise nicht in der Lage zu ziehen über die SurfaceView?

InformationsquelleAutor Albus Dumbledore | 2011-07-14

Schreibe einen Kommentar